(23)MyBatis的动态SQL:trim元素

360人浏览 / 0人评论

trim标记是一个格式化的标记,可以完成select,update,insert语句的格式化操作。trim元素的主要功能有四个:
(1)可以在包含的内容前加上某些前缀,与之对应的属性是prefix;
(2)也可以在包含的内容后加上某写后缀,与之对应的属性是suffix;
(3)可以把包含内容的首部某些内容覆盖,即忽略,对应的属性是prefixOverrides
(4)也可以把包含内容的尾部的某些内容覆盖,对应的属性是suffixOverrides。
以下举例说明一下trim元素的应用场景:

例子1:
select * from user 

   AND name=#{name}
   AND gender=#{gender}

假如说name和gender的值都不为null的话打印的SQL为:
select * from user where name = 'xx' and gender = 'xx'
where后不存在and,这是因为prefixOverrides="AND|OR"代表去掉第一个and或者是or。

例子2:
update user

   name=#{name} , 
   gender=#{gender} ,  

假如说name和gender的值都不为null的话打印的SQL为:
update user set name='xx', gender='xx' where id='x'
在gender='xx'后面不存在逗号,而且自动加了一个set前缀和where后缀。

例子3:
INSERT INTO S_NOTICE 

    ID,
    TITLE,
    CONTENT,
    NOTICE_STATUS,
    CREATED_BY,
    CREATED_TS,
    LAST_UPD_BY,
    LAST_UPD_TS,


    SYS_GUID(),
    #{title,jdbcType=VARCHAR},
    #{content,jdbcType=VARCHAR},
    #{noticeStatus,jdbcType=VARCHAR},
    #{createdBy,jdbcType=VARCHAR},
    systimestamp,
    #{lastUpdBy,jdbcType=VARCHAR},
    systimestamp,

全部评论

晴天下起了小雨
2017-10-01 18:00
很喜欢,果断关注了
wjmyly7336064
2017-10-01 18:00
相当实用,赞美了
橘大佬
2017-10-01 18:00
就是有些细节再到位点就好了…