trim标签有四个属性:
- prefix:前缀增加的内容
- prefixOverrides:覆盖第一个条件前缀的字符串
- suffix:后缀增加的内容
- suffixOverrides:覆盖最后一个条件后缀的字符串
下面看一个例子:
select * from student
<trim prefix="where" prefixoverride="and||or">
<if test="name!=null and name.length()>0">
and name=#{name}
</if>
<if test="sex!=null and sex.length()>0">
and sex=#{sex}
</if>
</trim>
如果name和sex的值不为null,则打印的sql语句为:
select * from student where name='xx' and sex='xx'
你会发现第一个条件前面的and字符串不见了,这个是由prefixoverride指定的字符串决定的,该例子的效果使用where标签也能做到。
在来看一个例子:
update student
<trim prefix="set" suffixoverride="," suffix="where id=#{id}">
<if test="name!=null and name.length()>0">
name=#{name},
</if>
<if test="sex!=null and sex.length()>0">
sex=#{sex},
</if>
</trim>
假如条件成立,打印的SQL语句为:
update student set name='xx', sex='xx' where id='xx'
你会发现最后一个条件后面的逗号“,”不见了,这个是由suffixoverride指定字符串决定的。