用MyBatis实现动态SQL的编写

一.if标签

if标签是我们最常使用的。在查询、删除、更新的时候很可能会使用到。必须结合 test 属性联合使用

a. WHERE 条件中使用 if 标签

这是常见的一种现象,我们在进行按条件查询的时候,可能会有多种情况。

在此 SQL 语句中, where 1=1 是多条件拼接时的小技巧, 后面的条件查询就可以都用 and 了。

测试:

结果:

测试:

此 if 标签的 test 属性值是一个符合 OGNL 的表达式,表达式可以是 true 或 false。如果表达式返回的是数值,0为 false, 非 0 为 true

b. UPDATE更新列中使用 if 标签

有时候我们不希望更新所有的字段,只更新有变化的字段

测试:

结果:只修改了teacher_name列

c. INSERT 动态插入中使用 if 标签

我们插入数据库中的一条记录, 不是每一个字段都有值的, 而是动态变化的。在这时候使用 if 标签,可以我们解决这个问题。

测试:

接口:

二. choose 标签

choose when otherwise 标签可以帮我们实现 if else 的逻辑。一个 choose 标签至少有一个 when, 最多一个otherwise。when 相当于java中的if, otherwise 相当于java中的else,when..otherwise相当于java中的if..else结构

获取老师的数量:

  1. 当age!=0时,按照age查找老师的数量
  2. 当age=0时,按照name查找老师
  3. 上述的二者都不满足条件时,返回0

测试: age和name都不满足条件

测试: age满足条件,name不满足条件

测试: age不满足条件,name满足条件

 

三. trim(set、where)标签

这三个其实解决的是类似的问题。如我们在写前面的[在 WHERE 条件中使用 if 标签 SQL 的时候, where 1=1 这个条件我们是不希望存在的。

where标签

测试:

set

测试:

trim

set和where其实都是trim标签的一种类型,该两种功能都可以使用trim标签进行实现。

trim 来表示 where

如where标签,我们也可以写成

表示当trim中含有内容时,添加where并且第一个and或or会将其去掉。

如果没有内容,则不添加 where。

trim来表示set

 set标签可以如下表示

表示当trim中含有内容时,添加set,且最后的内容为”,”时,会将其去掉。

trim 的几个属性

prefix:当trim元素包含有内容时,增加prefix所指定的前缀

prefixOverrides:当trim元素包含有内容时,去除prefixOverrides指定的前缀

suffix:当 trim元素包含有内容时,增加 suffix 所指定的后缀

suffixOverrides:当trim元素包含有内容时,去除suffixOverrides指定的后缀

  • 23
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值