动态SQL(if、where、trim、choose when otherwise、foreach、sql标签等)

动态SQL

简介:

MyBatis框架的动态SQL技术是一种根据特定条件动态拼接SQL语句的功能,它存在的意义是为了解决拼接SQL语句字符串时的痛点问题

1.若没有传输请求参数,而是服务器中却获取了参数则获取的都是null

2.若表没有输入数据,则提交后是空字符串

3.判断是否设置了条件;若接收的数据等于null或空字符串则没有设置条件

if标签:

if标签可通过test属性的表达式进行判断,若表达式的结果为true,则标签中的内容会执行,反之标签中的内容不会执行

新建一个工程添加Emp类,和工具类文件、核心配置文件等等

同时添加依赖以及接口文件和映射文件

 在DynamicSQLMapper的接口文件中声明条件查询员工信息的方法声明

在映射文件中添加sql语句,并进行条件判断 

 在测试类中添加测试方法

 测试结果如下所示:

 where标签:

where和if一般结合使用:

1.若where标签中的if条件都不满足,则where标签没有任何功能,即不会添加where关键字

2.若where标签中的if条件满足,则where标签会自动添加where关键字,并将条件最前方多余的and去掉

3.添加一个恒成立的条件,使得可以跟后面的条件拼接即使后面的条件不成立也不影响查询的报错

第一种方法:

当条件后面的一个为null或空字符串时,则会报错,可以在where后添加1=1恒成立来解决

接口中使用之前的根据条件查询员工信息的方法声明

 在映射文件中修改(添加1=1的恒成立)sql语句

 测试方法

测试结果 

 第二种方法:

在接口中添加方法声明

在映射文件中添加sql语句 

 

测试方法

 测试结果

 trim标签:

trim用于去掉或添加标签中的内容,

常用属性:

prefix:在trim标签中的内容的前面添加某些内容

prefixOverrides:在trim标签中的内容的前面去掉某些内容

suffix:在trim标签红的内容的后面添加某些内容

suffixOverrides:在trim标签中的内容的后面去掉某些内容

在接口文件中添加方法声明:

 在映射文件中添加sql语句

 

 测试方法

测试结果 

 choose、when、otherwise标签:

 choose、when、otherwise相当于 if...else if ... else

在接口文件中添加choose查询员工信息的方法声明

 在映射文件中添加sql语句

在测试类中添加测试方法 

 测试结果如下

 foreach(批量添加):

在接口文件中国添加批量添加员工信息的方法声明

在映射文件中添加批量添加员工信息的sql语句 

 在测试类中添加测试方法

 测试结果如下所示:

在数据库中数据刷新为如下所示: 

foreach标签(批量删除):

通过数组实现批量删除的功能

在接口文件中添加使用数组来实现批量删除的功能方法声明

在映射文件中添加sql语句 (有三种方法添加sql语句)

 第一种方式添加sql语句:

第二种方式添加sql语句: 

第三种方式添加sql语句:

 在测试类中添加测试方法

 

测试结果如下所示: 

 SQL标签:

sql片段,可以记录一段公共的sql片段,在使用的地方通过include标签进行引入        

使用sql来代替 *  

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jhan&

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值