MyBatis动态SQL中trim的使用
Posted 猎人在吃肉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis动态SQL中trim的使用相关的知识,希望对你有一定的参考价值。
MyBatis 中的 trim标签 是一个格式化的智能标记,可以动态地添加和删除SQL语句中的某些值,以完成 set 或者是 where 语句的组装。
trim 标签属性:
trim 标签中主要的属性有 prefix
、prefixOverrides
、suffix
、suffixOverrides
序号 | 属性 | 含义 | 说明 |
---|---|---|---|
1 | prefix | 前缀、起始处 | 在SQL片段的起始处 添加一些指定的内容 。 |
2 | prefixOverrides | 前面覆盖(删除) | 删除 SQL片段的起始处 指定的内容。 |
3 | suffix | 末尾处 | 在 SQL片段的末尾处 ,增加一些指定的内容 。 |
4 | suffixOverrides | 末尾处覆盖(删除) | 删除 SQL语句末尾处 指定的内容。 |
示列1
select * from user
<trim prefix="where" prefixOverrides=" and | or " >
<if test=" name!=null and name.length()>0 ">
and name=#name
</if>
<if test=" gender!=null and gender.length()>0 " >
and gender=#gender
</if>
</trim>
参数说明:
- prefix:在前面增加 where
- prefixOverrides:删除第一个and 或者 or
假如说name和gender的值都不为null的话打印的SQL为:
select * from user
where name = 'xx' and gender = 'xx'
示例2
update user
<trim prefix="set" suffixOverrides="," suffix=" where id = #id ">
<if test=" name != null and name.length()>0 " >
name=#name ,
</if>
<if test=" gender != null and gender.length()>0 " >
gender=#gender ,
</if>
</trim>
参数说明:
- prefix:在前端增加 set
- suffixOverrides:删除最后一个逗号(也可以是其他的标记,就像是上面前缀中的and一样)
- suffix:在最后面增加 where id = #id
假如说name和gender的值都不为null的话打印的SQL为:
update user
set name='xx' , gender='xx'
where id='x'
仔细体会 prefix 、suffixOverrides、suffix 在SQL语句中使用。
以上是关于MyBatis动态SQL中trim的使用的主要内容,如果未能解决你的问题,请参考以下文章