MyBatis框架的动态SQL技术是一种根据特定条件动态拼接SQL语句的功能,它存在的意义是为了解决拼接SQL语句字符串时的痛点问题
1.若没有传输请求参数,而是服务器中却获取了参数则获取的都是null
2.若表没有输入数据,则提交后是空字符串
3.判断是否设置了条件;若接收的数据等于null或空字符串则没有设置条件
if标签可通过test属性的表达式进行判断,若表达式的结果为true,则标签中的内容会执行,反之标签中的内容不会执行
新建一个工程添加Emp类,和工具类文件、核心配置文件等等
同时添加依赖以及接口文件和映射文件
在DynamicSQLMapper的接口文件中声明条件查询员工信息的方法声明
在映射文件中添加sql语句,并进行条件判断
在测试类中添加测试方法
测试结果如下所示:
where和if一般结合使用:
1.若where标签中的if条件都不满足,则where标签没有任何功能,即不会添加where关键字
2.若where标签中的if条件满足,则where标签会自动添加where关键字,并将条件最前方多余的and去掉
3.添加一个恒成立的条件,使得可以跟后面的条件拼接即使后面的条件不成立也不影响查询的报错
当条件后面的一个为null或空字符串时,则会报错,可以在where后添加1=1恒成立来解决
接口中使用之前的根据条件查询员工信息的方法声明
在映射文件中修改(添加1=1的恒成立)sql语句
测试方法
测试结果
在接口中添加方法声明
在映射文件中添加sql语句
测试方法
测试结果
trim用于去掉或添加标签中的内容,
常用属性:
prefix:在trim标签中的内容的前面添加某些内容
prefixOverrides:在trim标签中的内容的前面去掉某些内容
suffix:在trim标签红的内容的后面添加某些内容
suffixOverrides:在trim标签中的内容的后面去掉某些内容
在接口文件中添加方法声明:
在映射文件中添加sql语句
测试方法
测试结果
choose、when、otherwise相当于 if...else if ... else
在接口文件中添加choose查询员工信息的方法声明
在映射文件中添加sql语句
在测试类中添加测试方法
测试结果如下
在接口文件中国添加批量添加员工信息的方法声明
在映射文件中添加批量添加员工信息的sql语句
在测试类中添加测试方法
测试结果如下所示:
在数据库中数据刷新为如下所示:
通过数组实现批量删除的功能
在接口文件中添加使用数组来实现批量删除的功能方法声明
在映射文件中添加sql语句 (有三种方法添加sql语句)
第一种方式添加sql语句:
第二种方式添加sql语句:
第三种方式添加sql语句:
在测试类中添加测试方法
测试结果如下所示:
sql片段,可以记录一段公共的sql片段,在使用的地方通过include标签进行引入
使用sql来代替 *