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标签相关推荐

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

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

  2. MyBatis 中的trim标签介绍

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

  3. Mybatis中Collection集合标签的使用

    mybatis简单的CURD就不用多说了,网上相关博客文档一大堆.分析一下Mybatis里面的collection聚集查询.  假设一个班级有多名学生为例,通过班级号查询出该班级的信息,和班级里面的所 ...

  4. Mybatis中<trim>标签用法

    trim标签的属性: prefix: 拼接sql需要加上的前缀. prefixOverrides:前缀需要覆盖消除的内容. suffix:拼接sql需要加上的后缀 suffixOverrides:后缀 ...

  5. MyBatis框架使用trim标签修改字段,查询字段

    修改字段 Client.java package client;import java.io.*; import java.util.List; import org.apache.ibatis.io ...

  6. Mybatis中的常用标签

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

  7. MyBatis中动态SQL标签及作用

    注意:动态 SQL 主要是来解决查询条件不确定的情况,在程序运行期间,根据提交的条件动态的完成查询. 1.<if> 标签 if 是为了判断传入的值是否符合某种规则,可以让我们有选择的加入 ...

  8. mybatis动态sql中的trim标签的使用

    trim标记是一个格式化的标记,可以完成set或者是where标记的功能,如下代码: 1. select * from user <trim prefix="WHERE" p ...

  9. Mybatis中复杂语句标签的简单初步使用

    mybatis简单的CURD就不多说了.现在分析一下Mybatis里面的聚集查询.话不多说,还要工作敲bug! 1. 自己建个稍微复杂点的实体对象:这是继承一个实体类,并加上goods对象list,两 ...

最新文章

  1. Makefile 使用总结【转】
  2. 数据库规范设计说明书(参考阿里开发规范)
  3. java的abstract的意思_java – spring中的abstract =“true”是什么意思?
  4. 如何把模型表导入数据库
  5. springboot怎么替代jsp_如何在SpringBoot中使用JSP ?
  6. 青蛙换位java_青蛙换位
  7. 微软改进的DSSM结构:
  8. coreseek mysql_coreseek 与 php mysql 的联合使用
  9. MII、RMII、GMII、RGMII接口详解及硬件设计注意事项
  10. baidu 地图 3d版 自定义地图样式
  11. 2.try、catch、finally执行顺序 以及final、finally和finalize的区别
  12. 网络安全概论 第四章 电子邮件安全加密(PGP)
  13. Redis主从, 哨兵, Lettuce(二)
  14. 《数学之美》-吴军 读书笔记
  15. 什么是ASCII码?
  16. Android AOSP和Android-X86源码下载编译终极普法
  17. STM32物联网项目-单极性步进电机28BYJ-48
  18. 有没有人拼团csdn学习会员~~
  19. android11墓碑机制和addr2line使用
  20. 透过上层div点击下层div

热门文章

  1. 为什么智能音箱开始走向户外?
  2. 开源搜索引擎框架比较
  3. 使用Unity3D引擎制作塔防类游戏(二)
  4. OpenStack 网络总结之:理解GRE隧道的工作流程
  5. linux 企鹅 桌面程序,Linux 企鹅进军桌面,还有多远?(上)
  6. dubbo底层原理解析及安装应用
  7. 一位初级进阶中级 JavaScript 工作者的自我修养(一)
  8. 新东方百万年薪招聘私域运营,实在智能RPA数字员工以一抵百
  9. 隐藏Win10此电脑窗口的6个额外文件夹
  10. Python实现英文文章加密传送,收到后进行解密