MyBatis动态SQL中trim的使用

Posted 猎人在吃肉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis动态SQL中trim的使用相关的知识,希望对你有一定的参考价值。

MyBatis 中的 trim标签 是一个格式化的智能标记,可以动态地添加和删除SQL语句中的某些值,以完成 set 或者是 where 语句的组装。

trim 标签属性:

trim 标签中主要的属性有 prefixprefixOverridessuffixsuffixOverrides

序号属性含义说明
1prefix前缀、起始处SQL片段的起始处 添加一些指定的内容 。
2prefixOverrides前面覆盖(删除)删除 SQL片段的起始处 指定的内容。
3suffix末尾处SQL片段的末尾处,增加一些指定的内容 。
4suffixOverrides末尾处覆盖(删除)删除 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的使用的主要内容,如果未能解决你的问题,请参考以下文章

mybatis动态sql中的trim标签的使用

mybatis中动态SQL之trim详解

MyBatis 动态Sql

MyBatis动态sql

MyBatis的动态sql小练习,小回顾

Mybatis超强大的动态SQL大全