MyBatis -- 动态SQL(if、trim、where、set、choose(where、otherwise)、foreach)

一、动态SQL

1、基于OGNL表达式

2、完成多条件查询等逻辑实现

3、用于实现动态SQL的元素主要有

  • if
  • trim
  • where
  • set
  • choose(where、otherwise)
  • foreach

 

二、if元素 (改造查询用户信息列表的演示示例)

根据用户角色(userRole)和用户姓名(模糊查询)进行查询

if做非空判断

where根据sql,自动添加where,根据条件动态添加/删除and、or

mapper.xml文件

MyBatis -- 动态SQL(if、trim、where、set、choose(where、otherwise)、foreach)_第1张图片

Test类

MyBatis -- 动态SQL(if、trim、where、set、choose(where、otherwise)、foreach)_第2张图片

运行代码结果:

MyBatis -- 动态SQL(if、trim、where、set、choose(where、otherwise)、foreach)_第3张图片

 

三、set元素(用户表的修改操作 if + set)

set:会根据sql,自动的添加上set 还会动态去除逗号

MyBatis -- 动态SQL(if、trim、where、set、choose(where、otherwise)、foreach)_第4张图片

mapper.xml文件

MyBatis -- 动态SQL(if、trim、where、set、choose(where、otherwise)、foreach)_第5张图片

Test类

MyBatis -- 动态SQL(if、trim、where、set、choose(where、otherwise)、foreach)_第6张图片

运行代码结果:

MyBatis -- 动态SQL(if、trim、where、set、choose(where、otherwise)、foreach)_第7张图片

数据库中的用户信息发送改变

 

四、​​trim元素(用户表的查询操作 if + trim)

1、属性:

  • prefix:添加前缀
  • suffix:添加后缀
  • prefixOverrides:删除前缀
  • suffixOverrides:删除后缀

2、更灵活地去除多余关键字

3、替代where和set

使用trim替换where 和 set

MyBatis -- 动态SQL(if、trim、where、set、choose(where、otherwise)、foreach)_第8张图片

mapper.xml文件

1、查询用户  替代where

MyBatis -- 动态SQL(if、trim、where、set、choose(where、otherwise)、foreach)_第9张图片

Test类

MyBatis -- 动态SQL(if、trim、where、set、choose(where、otherwise)、foreach)_第10张图片

运行代码结果:

MyBatis -- 动态SQL(if、trim、where、set、choose(where、otherwise)、foreach)_第11张图片

 

2、修改用户 trim替代set

MyBatis -- 动态SQL(if、trim、where、set、choose(where、otherwise)、foreach)_第12张图片

Test类

MyBatis -- 动态SQL(if、trim、where、set、choose(where、otherwise)、foreach)_第13张图片

运行代码结果:

MyBatis -- 动态SQL(if、trim、where、set、choose(where、otherwise)、foreach)_第14张图片

数据库信息已修改

五、choose(where、otherwise)用户表的查询操作

相当于Java中有switch语句

当when有条件满足的时候,就跳出choose

mapper.xml

MyBatis -- 动态SQL(if、trim、where、set、choose(where、otherwise)、foreach)_第15张图片

Test类

MyBatis -- 动态SQL(if、trim、where、set、choose(where、otherwise)、foreach)_第16张图片

运行代码结果:

MyBatis -- 动态SQL(if、trim、where、set、choose(where、otherwise)、foreach)_第17张图片

 

五、foreach (获取多参数下用户列表)

1、foreach

  • collection 循环的类型
  • 数组 array
  • list list
  • map map的key

2、item 别名

3、open 起始符合

4、end 结束位置符号

5、index 下标

6、separator 分隔符

 

//select * from smbms_user where id in(1,2,5)

//等同于 select * from smbms_user where id = 1 or id = 2 or id = 5

 

传参:

1、数组传参

2、list传参

 

3、map传参

 

MyBatis -- 动态SQL(if、trim、where、set、choose(where、otherwise)、foreach)_第18张图片

MyBatis -- 动态SQL(if、trim、where、set、choose(where、otherwise)、foreach)_第19张图片

Test类

MyBatis -- 动态SQL(if、trim、where、set、choose(where、otherwise)、foreach)_第20张图片

MyBatis -- 动态SQL(if、trim、where、set、choose(where、otherwise)、foreach)_第21张图片

 

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