关于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详解相关推荐

  1. 【深度好文】Flink SQL流批⼀体化技术详解(一)

    持续输出 敬请关注 大数据架构  湖仓一体化  流批一体 离线+实时数仓  各种大数据解决方案  各种大数据新技术实践 持续输出  敬请关注 [珍藏版]数仓平台.推荐系统架构选型及解决⽅案_大数据研习 ...

  2. c++定义一个动态全局变量_静态链接与动态链接的宏观概述及微观详解

    静态链接与动态链接的宏观概述及微观详解 第一部分 宏观概述 1. 静态链接 静态链接就是在程序运行前,链接器通过对象文件中包含的重定位表,完成所有重定位操作,并最终形成一个在运行时不需要再次进行依赖库 ...

  3. python3d动态图-Python图像处理之gif动态图的解析与合成操作详解

    本文实例讲述了Python图像处理之gif动态图的解析与合成操作.分享给大家供大家参考,具体如下: gif动态图是在现在已经司空见惯,朋友圈里也经常是一言不合就斗图.这里,就介绍下如何使用python ...

  4. python调用shell脚本的参数_使用python执行shell脚本 并动态传参 及subprocess的使用详解

    最近工作需求中 有遇到这个情况 在web端获取配置文件内容 及 往shell 脚本中动态传入参数 执行shell脚本这个有多种方法 最后还是选择了subprocess这个python标准库 subpr ...

  5. SQL Server 默认跟踪 -- 捕获事件详解

    SQL Server 默认跟踪 -- 捕获事件详解 哪些具体事件默认跟踪文件能够捕获到? --returns full list of events SELECT * FROM sys.trace_e ...

  6. SQL Server 2008 R2 安装过程详解

    SQL Server 是Microsoft 公司推出的关系型数据库管理系统.Microsoft SQL Server 是一个全面的数据库平台,使用集成的商业智能 (BI)工具提供了企业级的数据管理.M ...

  7. python反向缩进_在Pycharm中对代码进行注释和缩进的方法详解

    在Pycharm中对代码进行注释和缩进的方法详解 一.注释 1. #单行注释 2. """ 多行注释 """ 3. pycharm多行注释快 ...

  8. 源代码下载 第六章 注解式控制器详解

    2019独角兽企业重金招聘Python工程师标准>>> 源代码请到附件中下载. 其他下载: 跟着开涛学SpringMVC 第一章源代码下载 第二章 Spring MVC入门 源代码下 ...

  9. goland 方法注释_goland 设置注释模板的过程图文详解

    网上找了一些办法 都没有说到关键点: 梳理一下设置步骤如下,以及避免的坑. 新建文件自动加注释: Preferences | Editor | File and Code Templates 打开go ...

最新文章

  1. HDU-4403 A very hard Aoshu problem 枚举
  2. SpringBoot集成OpenOffice实现doc文档转html
  3. 万网控制面板 php_UPUPW 控制面板启动关闭区介绍
  4. mysql 未找到命令_MySQL主从复制配置说明,一文教你搞懂数据库主从复制
  5. SQL Server:触发器详解
  6. 云原生应用 Kubernetes 监控与弹性实践
  7. 如何使用php写爬虫,PHP如何开发简单爬虫
  8. 花生油和菜籽油哪个更健康?
  9. Unity web player-----a new version is required/insatall manually
  10. 2003服务器系统QQ安装不了,windows2003server
  11. 【电路基础】第1章-电路的基本规律(1)
  12. 强化学习:基于MDP的经典RL方法 (基于南大俞扬博士演讲的少量修改和补充)
  13. AD参数微分非线性(DNL)与积分非线性(INL)
  14. 如何删除金山毒霸网址导航
  15. php开启sockets模块,独立编译php的sockets模块
  16. 测试IP和端口是否通
  17. 指数函数----e是什么?
  18. 新玺配资:股票市场中的配股是什么意思
  19. 学校学生工科学生接私活_理工科学生在美国以外的最佳城市
  20. Oracle数据库深入学习

热门文章

  1. 1.4最基本的使用--POM.xml文件
  2. ModelSim 使用笔记1
  3. Unity教程之-UGUI美术字体的制作与使用
  4. DAL,IDAL,BLL,Factory作用
  5. bzoj1878: [SDOI2009]HH的项链
  6. Junit单元测试学习笔记一
  7. jqm的多列布局demo,html5的多列布局demo,多列布局的具体解说,html5开发实例具体解释...
  8. [知识图谱实战篇] 三.Python提取JSON数据、HTML+D3构建基本可视化布局
  9. 【数据结构与算法】之深入解析“H指数II”的求解思路与算法示例
  10. iOS GPUImage之滤镜功能说明