1、trim基础
trim标签的四个属性
prefix(前缀),prefixOverrides(去掉第一个and或者是or),suffix(后缀),suffixOverrides(去掉最后一个)
1.1、prefix,suffix 表示在trim标签包裹的部分的前面或者后面添加内容(注意:是没有prefixOverrides,suffixOverrides的情况下)
1.2、如果有prefixOverrides,suffixOverrides 表示**覆盖**Overrides中的内容。
1.3、如果只有prefixOverrides,suffixOverrides 表示删除。
select * from table_name
<trim prefix="WHERE" prefixoverride="AND |OR">
<if test="column_1 != null and column_1.length()>0"> AND column_1=#{column_1}</if>
<if test="column_2 != null and column_2.length()>0"> AND column_2=#{column_2}</if>
</trim>
打印的SQL为:select * from table_name where column_1 = 'xx' and column_2 = 'xx'
删除了第一个and
另一个例子:
<update id="testTrim" parameterType="map">
update table_name
<trim prefix="set" suffixOverrides=",">
<if test="column_1!=null and column_1!=''">column_1= #{column_1},</if>
<if test="column_2!=null and column_2!=''">column_1= #{column_2},</if>
</trim>
<where>id = #{id}</where>
</update>
动态打印SQL:update table_name set column_1=1,column_2=2
只有prefix=“set”,表示在trim包裹的部分的前面添加 set。
只有suffixOverrides=“,”,表示删除最后一个逗号。
同样的效果
<update id="testTrim" parameterType="map">
update user
set
<trim suffixOverrides="," suffix="where id = #{id}">
<if test="column_1!=null and column_1!=''">column_1= #{column_1},</if>
<if test="column_2!=null and column_2!=''">column_1= #{column_2},</if>
</trim>
</update>
血是人生,禅是悟,是人生而悟觉,还是悟觉而人生。行空说,那得靠“悟”。
来源:oschina
链接:https://my.oschina.net/u/2903180/blog/1818362