一.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结构
获取老师的数量:
- 当age!=0时,按照age查找老师的数量
- 当age=0时,按照name查找老师
- 上述的二者都不满足条件时,返回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 所指定的后缀