MyBatis 动态sql移除最后的逗号 mybatis trim标签用法 Mybatis 去掉最后的逗号符号
一、概述
在使用MyBatis 写动态sql时,经常会遇到要移除最后多余的 符号 ,and , or之类的关键字 ; 还有可能需要移除的前缀 where , set 等关键字; 还有可能要在 sql的 最前面、最后面 添加 括号之类的操作。 可以在java代码中 生成对应的sql ,然后使用 ${sql} 。
可否直接在MyBatis中实现呢,答案是有的, MyBatis trim 标签 即可实现上述功能,本文将讲解 MyBatis trim 标签的用法。
二、代码理解
1、 标签 有以下4个属性 :
2、四个属性作用分别是
-
-
- prefix : 标签内,最前面追加内容
- prefixOverrides :标签内,最前面移除内容
- suffix : 标签内,尾巴追加内容
- suffixOverrides : 标签内,尾部移除内容
-
3、测试sql
<select id="trimTest" resultType="Map" >
select
1 as id ,
'小明' as name
from
dual
where
<trim prefix="( 1=1" prefixOverrides=";|,|!" suffix="and 2=2 )" suffixOverrides="and">
!
and 'hh'='hh'
and
</trim>
</select>
4、最终执行的sql如下:
select
1 as id ,
'小明' as name
from dual
where
( 1 = 1
and 'hh' = 'hh'
and 2 = 2 )
三、总结
1、MyBatis trim标签作用:
在标签内,动态的添加或移除 文本 ,若用同时移除多个可能是文本,需要用 管道符 进行分割。
// 移除头部可能的符号: ;、,、! 。
prefixOverrides=";|,|!"
2、trim 标签 4个属性,执行的顺序是:
1、 prefixOverrides: 移除头部符合条件的文本
2、 prefix: 添加头部的文本
3、 suffixOverrides:移除末尾符合条件的文本
4、 suffix:添加末尾的文本
参考资料:MyBatis 官方文档【trim】