MyBatis 中的trim标签
mybatis的trim标签一般用于去除sql语句中多余的and关键字,逗号,或者给sql语句前拼接 “where“、“set“以及“values(“ 等前缀,或者添加“)“等后缀,可用于选择性插入、更新、删除或者条件查询等操作。
以下是trim标签中涉及到的属性:下面使用几个例子来说明trim标签的使用。
1、使用trim标签去除多余的and关键字有这样的一个例子:
<select id="findActiveBlogLike" resultType="Blog"> SELECT * FROM BLOG WHERE <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></select>
如果这些条件没有一个能匹配上会发生什么?最终这条 SQL 会变成这样:
SELECT * FROM BLOGWHERE
这会导致查询失败。如果仅仅第二个条件匹配又会怎样?这条 SQL 最终会是这样:
SELECT * FROM BLOGWHERE AND title like ‘someTitle’
你可以使用where标签来解决这个问题,where 元素只会在至少有一个子元素的条件返回 SQL 子句的情况下才去插入“WHERE”子句。而且,若语句的开头为“AND”或“OR”,where 元素也会将它们去除。
<select id="findActiveBlogLike" resultType="Blog"> SELECT * FROM BLOG <where> <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> </where></select>
trim标签也可以完成相同的功能,写法如下:
<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>
2、使用trim标签去除多余的逗号有如下的例子:
如果红框里面的条件没有匹配上,sql语句会变成如下:
INSERT INTO role(role_name,) VALUES(roleName,)
插入将会失败。使用trim标签可以解决此问题,只需做少量的修改,如下所示:
其中最重要的属性是
suffixOverrides=","
表示去除sql语句结尾多余的逗号注:如果你有兴趣的话,也可以研究下Mybatis逆向工程生成的Mapper文件,其中也使用了trim标签,但结合了foreach、choose等标签,更多的是牵扯到Criterion的源码研究。不过研究完之后,你将熟练掌握mybatis各种标签的使用,学到Criterion的设计思想,对自己的启发将会很大。
文章来源:微点阅读 https://www.weidianyuedu.com
MyBatis 中的trim标签相关推荐
- 技巧:MyBatis 中的trim标签,好用!
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者 | wt_better 来源 | https://blog. ...
- MyBatis 中的trim标签介绍
mybatis的trim标签一般用于去除sql语句中多余的and关键字,逗号,或者给sql语句前拼接 "where"."set"以及"values(& ...
- Mybatis中Collection集合标签的使用
mybatis简单的CURD就不用多说了,网上相关博客文档一大堆.分析一下Mybatis里面的collection聚集查询. 假设一个班级有多名学生为例,通过班级号查询出该班级的信息,和班级里面的所 ...
- Mybatis中<trim>标签用法
trim标签的属性: prefix: 拼接sql需要加上的前缀. prefixOverrides:前缀需要覆盖消除的内容. suffix:拼接sql需要加上的后缀 suffixOverrides:后缀 ...
- MyBatis框架使用trim标签修改字段,查询字段
修改字段 Client.java package client;import java.io.*; import java.util.List; import org.apache.ibatis.io ...
- Mybatis中的常用标签
trim标签 MyBatis的trim标签一般用于去除sql语句中多余的and关键字,逗号,或者给sql语句前拼接 "where"."set"以及"v ...
- MyBatis中动态SQL标签及作用
注意:动态 SQL 主要是来解决查询条件不确定的情况,在程序运行期间,根据提交的条件动态的完成查询. 1.<if> 标签 if 是为了判断传入的值是否符合某种规则,可以让我们有选择的加入 ...
- mybatis动态sql中的trim标签的使用
trim标记是一个格式化的标记,可以完成set或者是where标记的功能,如下代码: 1. select * from user <trim prefix="WHERE" p ...
- Mybatis中复杂语句标签的简单初步使用
mybatis简单的CURD就不多说了.现在分析一下Mybatis里面的聚集查询.话不多说,还要工作敲bug! 1. 自己建个稍微复杂点的实体对象:这是继承一个实体类,并加上goods对象list,两 ...
最新文章
- Makefile 使用总结【转】
- 数据库规范设计说明书(参考阿里开发规范)
- java的abstract的意思_java – spring中的abstract =“true”是什么意思?
- 如何把模型表导入数据库
- springboot怎么替代jsp_如何在SpringBoot中使用JSP ?
- 青蛙换位java_青蛙换位
- 微软改进的DSSM结构:
- coreseek mysql_coreseek 与 php mysql 的联合使用
- MII、RMII、GMII、RGMII接口详解及硬件设计注意事项
- baidu 地图 3d版 自定义地图样式
- 2.try、catch、finally执行顺序 以及final、finally和finalize的区别
- 网络安全概论 第四章 电子邮件安全加密(PGP)
- Redis主从, 哨兵, Lettuce(二)
- 《数学之美》-吴军 读书笔记
- 什么是ASCII码?
- Android AOSP和Android-X86源码下载编译终极普法
- STM32物联网项目-单极性步进电机28BYJ-48
- 有没有人拼团csdn学习会员~~
- android11墓碑机制和addr2line使用
- 透过上层div点击下层div