MyBatis动态SQL中trim的使用

来源:互联网 发布:傣族 知乎 编辑:程序博客网 时间:2024/04/30 05:28

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

trim 属性值:

prefix:前缀,增加一些指定的内容
prefixOverrides:前缀重写,删除指定的内容

suffixOverrides:后缀重写,删除指定的内容
suffix:后缀,增加一些指定的内容

注意4个属性值的作用位置:

依次是 prefix、prefixOverrides、suffixOverrides、suffix

示列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 userwhere 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语句中作用的位置。

原创粉丝点击