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

作者: adminmane | 来源:发表于2020-06-19 16:17 被阅读0次

mybatis的trim标签一般用于去除sql语句中多余的and关键字,逗号,或者给sql语句前拼接 “where“、“set“以及“values(“ 等前缀,或者添加“)“等后缀,可用于选择性插入、更新、删除或者条件查询等操作。

以下是trim标签中涉及到的属性:

技巧:MyBatis 中的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标签去除多余的逗号

有如下的例子:

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

如果红框里面的条件没有匹配上,sql语句会变成如下:

INSERT INTO role(role_name,) VALUES(roleName,)

插入将会失败。使用trim标签可以解决此问题,只需做少量的修改,如下所示:

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

其中最重要的属性是

suffixOverrides=","

表示去除sql语句结尾多余的逗号

注:如果你有兴趣的话,也可以研究下Mybatis逆向工程生成的Mapper文件,其中也使用了trim标签,但结合了foreach、choose等标签,更多的是牵扯到Criterion的源码研究。不过研究完之后,你将熟练掌握mybatis各种标签的使用,学到Criterion的设计思想,对自己的启发将会很大。

接下来是小编通过一些大厂的朋友要到了他们内部的Java面试题,资料难得,而且还是近一年的真实面试题;

分别有:蚂蚁金服、拼多多、阿里云、百度、唯品会、携程、丰巢科技、乐信、软通动力、OPPO、银盛支付、中国平安等初,中级,高级Java面试题集合,附带超详细答案,希望能帮助到大家。

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

小编网盘也通过这些年的积累,把Java电子书也分享给大家,大概有10G左右的资源

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

珍藏多年的230个高端简历模板,也一起送给大家

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

1、加微信获取备注:简书


1892324-20200408173704995-149739833.png

相关文章

网友评论

    本文标题:技巧:MyBatis 中的trim标签,好用

    本文链接:https://www.haomeiwen.com/subject/rtxbxktx.html