mybitys 动态sql 注释_mybatis注解动态sql详解
关于mybatis已经给大家讲过很多次了,下面要接着给大家介绍mybatis注解动态sql的内容,一起来了解一下mybatis注解开发之三种动态sql吧。
1、脚本sql
对于XML配置方式的动态SQL这里的话就不怎么讲了,下面的内容是用
的方式将他照搬过来,用注解来实现。
这个比较适用于xml配置转换到注解配置。
其实,可以很明显的看出,在java当中写xml可读性和维护性真的是比较的差的,尤其是在SQL非常长的时候,超级的麻烦。
2、在方法中构建sql
这里的话,我们借用内部类来生成动态SQL。
增改删有对应的@InsertProvider、@UpdateProvider、@DeleteProvider。
这样的话会更加的清晰一些,它比较的适合用于查询语句不是特别的长,条件不多的场景。
但是,在写非常长的SQL的时候,这样的方式也是会比较的麻烦,写到不想写了。@Mapper
public interface MybatisDao
{
//使用UserDaoProvider类的findUserById方法来生成sql
@SelectProvider(type = UserDaoProvider.class, method = "findUserById")
public List findUserById(User user);
class UserDaoProvider
{
public String findUserById(User user)
{
String sql = "SELECT * FROM user";
if (user.getId() != null)
{
sql += " where id = #{id}";
}
return sql;
}
}
3、结构化SQL
这里的话,将前面的内部类进行了一下改造。public String findUserById(User user)
{
return new SQL()
{
{
SELECT("id,name");
SELECT("other");
FROM("user");
if (user.getId() != null)
{
WHERE("id = #{id}");
}
if (user.getName() != null)
{
WHERE("name = #{name}");
}
//从这个toString可以看出,其内部使用高效的StringBuilder实现SQL拼接
}
}.toString();
}
上面的一些例子都只是一些很基础的用法介绍,假如你还想了解更多的用法,请继续关注奇Q工具网的常见问题栏目来进行了解吧。
推荐阅读:
mybitys 动态sql 注释_mybatis注解动态sql详解相关推荐
- 【深度好文】Flink SQL流批⼀体化技术详解(一)
持续输出 敬请关注 大数据架构 湖仓一体化 流批一体 离线+实时数仓 各种大数据解决方案 各种大数据新技术实践 持续输出 敬请关注 [珍藏版]数仓平台.推荐系统架构选型及解决⽅案_大数据研习 ...
- c++定义一个动态全局变量_静态链接与动态链接的宏观概述及微观详解
静态链接与动态链接的宏观概述及微观详解 第一部分 宏观概述 1. 静态链接 静态链接就是在程序运行前,链接器通过对象文件中包含的重定位表,完成所有重定位操作,并最终形成一个在运行时不需要再次进行依赖库 ...
- python3d动态图-Python图像处理之gif动态图的解析与合成操作详解
本文实例讲述了Python图像处理之gif动态图的解析与合成操作.分享给大家供大家参考,具体如下: gif动态图是在现在已经司空见惯,朋友圈里也经常是一言不合就斗图.这里,就介绍下如何使用python ...
- python调用shell脚本的参数_使用python执行shell脚本 并动态传参 及subprocess的使用详解
最近工作需求中 有遇到这个情况 在web端获取配置文件内容 及 往shell 脚本中动态传入参数 执行shell脚本这个有多种方法 最后还是选择了subprocess这个python标准库 subpr ...
- SQL Server 默认跟踪 -- 捕获事件详解
SQL Server 默认跟踪 -- 捕获事件详解 哪些具体事件默认跟踪文件能够捕获到? --returns full list of events SELECT * FROM sys.trace_e ...
- SQL Server 2008 R2 安装过程详解
SQL Server 是Microsoft 公司推出的关系型数据库管理系统.Microsoft SQL Server 是一个全面的数据库平台,使用集成的商业智能 (BI)工具提供了企业级的数据管理.M ...
- python反向缩进_在Pycharm中对代码进行注释和缩进的方法详解
在Pycharm中对代码进行注释和缩进的方法详解 一.注释 1. #单行注释 2. """ 多行注释 """ 3. pycharm多行注释快 ...
- 源代码下载 第六章 注解式控制器详解
2019独角兽企业重金招聘Python工程师标准>>> 源代码请到附件中下载. 其他下载: 跟着开涛学SpringMVC 第一章源代码下载 第二章 Spring MVC入门 源代码下 ...
- goland 方法注释_goland 设置注释模板的过程图文详解
网上找了一些办法 都没有说到关键点: 梳理一下设置步骤如下,以及避免的坑. 新建文件自动加注释: Preferences | Editor | File and Code Templates 打开go ...
最新文章
- HDU-4403 A very hard Aoshu problem 枚举
- SpringBoot集成OpenOffice实现doc文档转html
- 万网控制面板 php_UPUPW 控制面板启动关闭区介绍
- mysql 未找到命令_MySQL主从复制配置说明,一文教你搞懂数据库主从复制
- SQL Server:触发器详解
- 云原生应用 Kubernetes 监控与弹性实践
- 如何使用php写爬虫,PHP如何开发简单爬虫
- 花生油和菜籽油哪个更健康?
- Unity web player-----a new version is required/insatall manually
- 2003服务器系统QQ安装不了,windows2003server
- 【电路基础】第1章-电路的基本规律(1)
- 强化学习:基于MDP的经典RL方法 (基于南大俞扬博士演讲的少量修改和补充)
- AD参数微分非线性(DNL)与积分非线性(INL)
- 如何删除金山毒霸网址导航
- php开启sockets模块,独立编译php的sockets模块
- 测试IP和端口是否通
- 指数函数----e是什么?
- 新玺配资:股票市场中的配股是什么意思
- 学校学生工科学生接私活_理工科学生在美国以外的最佳城市
- Oracle数据库深入学习
热门文章
- 1.4最基本的使用--POM.xml文件
- ModelSim 使用笔记1
- Unity教程之-UGUI美术字体的制作与使用
- DAL,IDAL,BLL,Factory作用
- bzoj1878: [SDOI2009]HH的项链
- Junit单元测试学习笔记一
- jqm的多列布局demo,html5的多列布局demo,多列布局的具体解说,html5开发实例具体解释...
- [知识图谱实战篇] 三.Python提取JSON数据、HTML+D3构建基本可视化布局
- 【数据结构与算法】之深入解析“H指数II”的求解思路与算法示例
- iOS GPUImage之滤镜功能说明