mybatis 的trim标签的使用,属性prefix,suffix,prefixOverrides,suffixOverrides
作用:解决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相关推荐
- mybatis中prefix,suffix,prefixOverrides,suffixOverrides用法解释
<trim prefix="" suffix="" suffixOverrides="" prefixOverrides=" ...
- Mybatis值trim标签
Mybatis具有实现动态SQL的能力,使用这个特性免不了会用到trim这个标签,trim标签的功能简单来说就是自定义格式拼凑SQL语句. trim有4个属性: prefix:表示在t ...
- mybatis的trim标签
prefix trim标签内sql语句加前缀 suffix 加后缀 prefixOverrides 去除多余的前缀 suffixOverrides 去除多余的后缀 <insert id=&quo ...
- MyBatis的<trim></trim>标签及prefix,suffix,suffixOverrides
开发中常见用法 <insert id="insertSelective" parameterType="com.lwx.rental.core.db.po.Rent ...
- 技巧:MyBatis 中的trim标签,好用!
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者 | wt_better 来源 | https://blog. ...
- Mybatis基础知识点:trim标签的使用
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:wt_better blog.csdn.net/wt_bet ...
- MyBatis 中的trim标签介绍
mybatis的trim标签一般用于去除sql语句中多余的and关键字,逗号,或者给sql语句前拼接 "where"."set"以及"values(& ...
- MyBatis 中的trim标签
mybatis的trim标签一般用于去除sql语句中多余的and关键字,逗号,或者给sql语句前拼接 "where"."set"以及"values(& ...
- mybatis之trim prefix= suffix= suffixOverrides= prefixOverrides=/trim
转载自 https://blog.csdn.net/qq_33054511/article/details/70490046 1.<trim prefix="" suffix ...
最新文章
- C语言科学计算器思路,大神教你如何用C语言实现科学计算器
- centos 配置redis
- linux下如何修改weblogic console登陆的用户名和密码
- 机器人学习--路径规划算法
- ssm实现发送邮件功能
- GRpc-Go使用笔记
- 模块定义文件导出类_浓缩的就是精华——ES6模块精炼讲解
- nginx正向代理https,zabbix内网实现企业微信告警
- 一夜回到解放前,无数可依情况下如何做好风险控制
- 本来连学计算机的都不是,怎么却读了计算机研究生
- 开拓者队医当选年度最佳 球迷:罗伊情何以堪
- 纸壳CMS现已支持自定义扩展字段
- 阿里云远程桌面无法连接怎么办
- 11. WS · HTTPDNS · FTP · 邮件
- 泛微Ecology8.0二次开发指导手册
- 环境温度 和气温的区别,有区别吗
- 【JAVA程序设计】(C00073)基于SSH(非maven)便利店管理系统-有文档
- [C/C++/Qt] 网易云音乐缓存文件批量自动解析解码工具 - CloudMusicCache2Mp3(开源)(Version:1.0)
- Python导入导出excel
- 移动flexe小颗粒