MyBatis 动态SQL使用

动态 sql 是Mybatis的强⼤特性之⼀,能够完成不同条件下不同的 sql 拼接。
 

1.标签

MyBatis 动态SQL使用_第1张图片

 

MyBatis 动态SQL使用_第2张图片 

 MyBatis 动态SQL使用_第3张图片

 

 运行结果:

MyBatis 动态SQL使用_第4张图片

 

 2.标签

之前的插⼊⽤户功能,只是有⼀个 photo 字段可能是选填项,如果有多个字段,⼀般考虑使⽤标签结合标签,对多个字段都采取动态⽣成的⽅式。

标签中有如下属性:

  • prefix:表示整个语句块,以prefix的值作为前缀
  • suffix:表示整个语句块,以suffix的值作为后缀
  • prefixOverrides:表示整个语句块要去除掉的前缀
  • suffixOverrides:表示整个语句块要去除掉的后缀
     

MyBatis 动态SQL使用_第5张图片
 

MyBatis 动态SQL使用_第6张图片 

MyBatis 动态SQL使用_第7张图片 

运行结果:

MyBatis 动态SQL使用_第8张图片 

在以上 sql 动态解析时,会将第⼀个 部分做如下处理:

  • 基于 prefix 配置,开始部分加上 (
  • 基于 suffix 配置,结束部分加上 )
  • 多个 组织的语句都以 , 结尾,在最后拼接好的字符串还会以 , 结尾,会基于 suffixOverrides 配置去掉最后⼀个 ,
  • 注意 中的 createTime 是传⼊对象的属性

 

 3.标签

传⼊的⽤户对象,根据属性做where条件查询,⽤户对象中属性不为 null 的,都为查询条件。

 

MyBatis 动态SQL使用_第9张图片

 

MyBatis 动态SQL使用_第10张图片 

MyBatis 动态SQL使用_第11张图片 

MyBatis 动态SQL使用_第12张图片 

运行结果:

MyBatis 动态SQL使用_第13张图片 

 以上标签也可以使⽤ 替换。

  

4.标签

 

MyBatis 动态SQL使用_第14张图片

 

MyBatis 动态SQL使用_第15张图片 

MyBatis 动态SQL使用_第16张图片 

MyBatis 动态SQL使用_第17张图片 

运行结果:

MyBatis 动态SQL使用_第18张图片

5.标签
对集合进⾏遍历时可以使⽤该标签。标签有如下属性:

  • collection:绑定⽅法参数中的集合,如 List,Set,Map或数组对象
  • item:遍历时的每⼀个对象
  • open:语句块开头的字符串
  • close:语句块结束的字符串
  • separator:每次遍历之间间隔的字符串
     

MyBatis 动态SQL使用_第19张图片 

 

MyBatis 动态SQL使用_第20张图片 

 

  MyBatis 动态SQL使用_第21张图片

 

MyBatis 动态SQL使用_第22张图片

 运行结果:

MyBatis 动态SQL使用_第23张图片

 

MyBatis 动态SQL使用_第24张图片 

 

你可能感兴趣的:(JavaEE,mybatis,sql,java)