作用:解决sql拼接问题。

第一种:where ... and..

第二种:入参对象,有些字段为null或者空,在写sql的增删改查时,就不应该加入了,就会面临拼接时多  逗号‘,’

1、trime标签相当于where标签的作用:

<trim prefix="WHERE" prefixOverrides="AND"><if test="state != null">state = #{state}</if> <if test="title != null">AND title like #{title}</if><if test="author != null and author.name != null">AND author_name like #{author.name}</if>
</trim>

单句解释:在<if> <if/>等标签最终完成拼接的sql语句进行操作,where + 拼接sql +如果AND开头,去除AND。

<trim prefix="WHERE" prefixOverrides="AND">

prefix="WHERE"不参与sql拼接,意思就是直接在sql前面+where关键字

<trim>标签也就是作用范围在这段:

        <if test="state != null">state = #{state}</if> <if test="title != null">AND title like #{title}</if><if test="author != null and author.name != null">AND author_name like #{author.name}</if>

某部分条件满足,sql正常,sql拼接成

state = #{state}  AND title like #{title}

特殊情况:如果最终拼接成这样,就会去除AND


AND title like ‘someTitle’

配置了prefixOverrides="AND变成

title like ‘someTitle’

where标签介绍:

where 元素只会在至少有一个子元素的条件返回 SQL 子句的情况下才去插入“WHERE”子句。
而且,若语句的开头为“AND”或“OR”,where 元素也会将它们去除。

2、去除多余的逗号等

<trim prefix="set" suffixOverrides=",">

比如要插入user对象值,如果名字为空,或者年龄为空,则不更新这些字段

如果写成原来的:

insert into (username,password,age,address,phone)
values
(#{username},#{password},#{age},#{address},#{phone});

或者<if>标签配合用,都会有很大的问题

直接上例子吧

 <!--对应的接口 int updateStreamBoxes(@Param("list") List<SBox> list);-->
<update id="updateStreamBoxes" parameterType="list">update stream_box<trim prefix="set" suffixOverrides=","><trim prefix="use_state =case" suffix="end,"><foreach collection="list" item="i" index="index">when stream_box_id=#{i.streamBoxId} then #{i.useState}</foreach></trim><trim prefix=" set_id =case" suffix="end,"><foreach collection="list" item="i" index="index">when stream_box_id=#{i.streamBoxId} then #{i.setId}</foreach></trim><trim prefix=" pre_set_id =case" suffix="end,"><foreach collection="list" item="i" index="index">when stream_box_id=#{i.streamBoxId} then #{i.preSetId}</foreach></trim><trim prefix=" pre_use_capability =case" suffix="end,"><foreach collection="list" item="i" index="index">when stream_box_id=#{i.streamBoxId} then #{i.preUseCapability}</foreach></trim><trim prefix=" last_set_id =case" suffix="end,"><foreach collection="list" item="i" index="index">when stream_box_id=#{i.streamBoxId} then #{i.lastSetId}</foreach></trim><trim prefix=" last_use_capability =case" suffix="end,"><foreach collection="list" item="i" index="index">when stream_box_id=#{i.streamBoxId} then #{i.lastUseCapability}</foreach></trim></trim>where<foreach collection="list" separator="or" item="i" index="index" >stream_box_id=#{i.streamBoxId}</foreach></update>

参考:https://blog.csdn.net/wt_better/article/details/80992014

mybatis 的trim标签的使用,属性prefix,suffix,prefixOverrides,suffixOverrides相关推荐

  1. mybatis中prefix,suffix,prefixOverrides,suffixOverrides用法解释

    <trim prefix="" suffix="" suffixOverrides="" prefixOverrides=" ...

  2. Mybatis值trim标签

    Mybatis具有实现动态SQL的能力,使用这个特性免不了会用到trim这个标签,trim标签的功能简单来说就是自定义格式拼凑SQL语句.         trim有4个属性: prefix:表示在t ...

  3. mybatis的trim标签

    prefix trim标签内sql语句加前缀 suffix 加后缀 prefixOverrides 去除多余的前缀 suffixOverrides 去除多余的后缀 <insert id=&quo ...

  4. MyBatis的<trim></trim>标签及prefix,suffix,suffixOverrides

    开发中常见用法 <insert id="insertSelective" parameterType="com.lwx.rental.core.db.po.Rent ...

  5. 技巧:MyBatis 中的trim标签,好用!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者 | wt_better 来源 | https://blog. ...

  6. Mybatis基础知识点:trim标签的使用

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:wt_better blog.csdn.net/wt_bet ...

  7. MyBatis 中的trim标签介绍

    mybatis的trim标签一般用于去除sql语句中多余的and关键字,逗号,或者给sql语句前拼接 "where"."set"以及"values(& ...

  8. MyBatis 中的trim标签

    mybatis的trim标签一般用于去除sql语句中多余的and关键字,逗号,或者给sql语句前拼接 "where"."set"以及"values(& ...

  9. mybatis之trim prefix= suffix= suffixOverrides= prefixOverrides=/trim

    转载自 https://blog.csdn.net/qq_33054511/article/details/70490046 1.<trim prefix="" suffix ...

最新文章

  1. C语言科学计算器思路,大神教你如何用C语言实现科学计算器
  2. centos 配置redis
  3. linux下如何修改weblogic console登陆的用户名和密码
  4. 机器人学习--路径规划算法
  5. ssm实现发送邮件功能
  6. GRpc-Go使用笔记
  7. 模块定义文件导出类_浓缩的就是精华——ES6模块精炼讲解
  8. nginx正向代理https,zabbix内网实现企业微信告警
  9. 一夜回到解放前,无数可依情况下如何做好风险控制
  10. 本来连学计算机的都不是,怎么却读了计算机研究生
  11. 开拓者队医当选年度最佳 球迷:罗伊情何以堪
  12. 纸壳CMS现已支持自定义扩展字段
  13. 阿里云远程桌面无法连接怎么办
  14. 11. WS · HTTPDNS · FTP · 邮件
  15. 泛微Ecology8.0二次开发指导手册
  16. 环境温度 和气温的区别,有区别吗
  17. 【JAVA程序设计】(C00073)基于SSH(非maven)便利店管理系统-有文档
  18. [C/C++/Qt] 网易云音乐缓存文件批量自动解析解码工具 - CloudMusicCache2Mp3(开源)(Version:1.0)
  19. Python导入导出excel
  20. 移动flexe小颗粒

热门文章

  1. 计算机相关书籍推荐(持续更新)
  2. Python查找算法之狄克斯特拉算法
  3. 固定资产管理系统能给行政和IT人员带来什么?
  4. 数据科学太难?这些陷阱请避开,正能量很重要!
  5. python爬虫:批量刷新网页
  6. Linux系统存储之LVM
  7. 美图秀秀开发插件生成的图片都有哪些格式?
  8. 这些新规今起实施:侵犯民警执法权威或被追刑责
  9. python图案绘制解锁_PythonAppium实现安卓手机图形解锁
  10. linux xz压缩解压