fenghzy 发表于 2016-11-27 12:55:17

MyBatis动态SQL中trim标签的使用

  My Batis 官方文档 对 动态SQL中使用trim标签的场景及效果介绍比较少。
  事实上trim标签有点类似于replace效果。
  trim 属性
  prefix:前缀覆盖并增加其内容
  suffix:后缀覆盖并增加其内容
  prefixOverrides:前缀判断的条件
  suffixOverrides:后缀判断的条件
  比如:

select b.* from sys_menu b where 1 = 1
<trim suffix="WHERE" suffixOverrides="AND | OR">
<if test="id != null and id !='' ">
AND b.id =#{id}
</if>
<if test="name != null">
AND b.menu_name like #{name}
</if>
</trim>
  最终sql打印为:
  select b.* from sys_menu b where 1 = 1 AND b.menu_name like '' WHERE
  从结果可以发现:

<trim suffix="WHERE" suffixOverrides="AND | OR">

  suffix是针对符合suffixOverrides的SQL语句追加后缀suffix值。
  总而言之:

<trim suffix="WHERE" suffixOverrides="AND | OR">
  And  sqlxxx
  最终结果是:
  And  sqlxxx WHERE
  我不是很确认这种用法的具体场景,但是,就目前mybatis的动态sql语句来看的话,很多标签都足够用了。
页: [1]
查看完整版本: MyBatis动态SQL中trim标签的使用