什么是动态sql
是mybatis的核心 ,能够对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接、组装,满足不同的功能或者需求。
1.条件判断(if)
例如我们要判断查询的某个参数但要求输入的参数不为空时才进行查询,此时就可以使用动态sql的条件判断
例如我们的条件sql语句这么写
写个测试类测试一下三个判断效果
性别为空
用户名为空
都为空时
2.sql片段(提高sql代码的重用性)
mapper.xml配置如下
用刚才的测试类测试一下效果
效果是一样的
3.foreach(一次插入多个相同字段的不同条件)
例如要查询某id为1,3,5的用户
第一种sql写法
SELECT * FROM USER WHERE id=1 OR id=3 OR id=5
第二种sql写法
SELECT * FROM USER WHERE id IN(1,3,5)
实现过程(第一种方式)
1.在输入参数类型中定义参数列表,这里就是id列表
2.编写mapper.xml文件
测试类
结果
实现过程(第二种方式)
就是mapper.xml文件不一样,修改一下即可
同样的测试类
结果
总结,动态sql非常灵活,这是mybatis的核心,可以提高扩展性,对于优化sql优化性能有很好的帮助,常用的就是if条件判断、foreach、还有sql片段