trim代替where/set标签

trim 是更灵活用来去处多余关键字的标签,它可以用来实现 where 和 set 的效果。

<!-- 使用 if/trim 代替 where(判断参数) - 将 User 类不为空的属性作为 where 条件 -->
<select id="getUsertList_if_trim" resultMap="resultMap_User">
SELECT *
FROM user u
<trim prefix="WHERE" prefixOverrides="AND|OR">
<if test="username !=null ">
u.username LIKE CONCAT(CONCAT('%', #{username, jdbcType=VARCHAR}),'%')
</if>
<if test="sex != null and sex != '' ">
AND u.sex = #{sex, jdbcType=INTEGER}
</if>
<if test="birthday != null ">
AND u.birthday = #{birthday, jdbcType=DATE}
</if>
</trim>
</select>

trim 代替 set

<!-- if/trim代替set(判断参数) - 将 User 类不为空的属性更新 -->
<update id="updateUser_if_trim" parameterType="com.yiibai.pojo.User">
UPDATE user
<trim prefix="SET" suffixOverrides=",">
<if test="username != null and username != '' ">
username = #{username},
</if>
<if test="sex != null and sex != '' ">
sex = #{sex},
</if>
<if test="birthday != null ">
birthday = #{birthday},
</if> </trim>
WHERE user_id = #{user_id}
</update>

trim (对包含的内容加上 prefix,或者 suffix 等,前缀,后缀)

<select id="dynamicTrimTest" parameterType="Blog" resultType="Blog">
select * from t_blog
<trim prefix="where" prefixOverrides="and |or">
<if test="title != null">
title = #{title}
</if>
<if test="content != null">
and content = #{content}
</if>
<if test="owner != null">
or owner = #{owner}
</if>
</trim>
</select>

trim 元素的主要功能是可以在自己包含的内容前加上某些前缀,也可以在其后加上某些后缀,与之对应的属性是 prefix 和 suffix;可以把包含内容的首部某些内容覆盖,即忽略,也可以把尾部的某些内容覆盖,对应的属性是 prefixOverrides 和 suffixOverrides;正因为 trim 有这样的功能,所以我们也可以非常简单的利用 trim 来代替 where 元素的功能。

最新文章

  1. 使用css3的动画模拟太阳系行星公转
  2. POJ3422 Kaka&#39;s Matrix Travels[费用流]
  3. JavaScript 中对内存的一些了解
  4. windows服务器的DDOS防御,
  5. Angular Module声明和获取重载
  6. Eclipse 反编译插件JadClipse安装
  7. RabbitMQ官方中文入门教程(PHP版) 第一部分:Hello World
  8. Linux PHP增加JSON支持及如何使用JSON
  9. linux 安装oracle 11g
  10. webdriver(python)学习笔记二
  11. Python 学习之中的一个:在Mac OS X下基于Sublime Text搭建开发平台包括numpy,scipy
  12. 阿里P8分享:关于做事方式与做事态度
  13. 射频识别技术漫谈(22)——RC系列射频芯片的寄存器操作
  14. C#如何在panl控件上添加Form窗体
  15. 让.NET程序快速释放内存的办法
  16. python函数(4):递归函数及二分查找算法
  17. PTA第四次作业
  18. background-attachment属性
  19. 函数调用的区别:_cdecl以及_stdcall
  20. Linux基础命令---chsh

热门文章

  1. Shell脚本判断内容为None的方式
  2. Vue.js使用-组件示例(实现数据的CRUD)
  3. 【教程】ubuntu下安装samba服务器
  4. maven 引入仓库外部jar
  5. celery 实例进阶
  6. php多进程编程相关资料(以备参考)
  7. RabbitMQ文档翻译——Hello World!(上)
  8. C#使用ActiveMQ实例
  9. sql优化方法学习和总结
  10. Writing your first Django