【DB系列】Mybatis之转义符的使用姿势

文章目录
  1. I.转义
    1. 1. 转义符
    2. 2. <![CDATA[ ]]> 写法
  2. III. 不能错过的源码和相关知识点
    1. 0. 项目
    2. 1. 微信公众号: 一灰灰Blog

在mybatis的xml文件中直接写sql比较方便简洁,但是需要注意的是,在xml文件中,经常会遇到一些需要转义的场景,比如查询 id < xxx的数据,这个小于号就不能直接写在sql中,接下来我们将看一下,mybatis中的有哪些转义符,可以怎么处理转义问题

I.转义

1. 转义符

在mybatis的xml文件中,我们最常见的转义符为小于号,如查询id小于100的数据

1
2
3
<select id="xxx">
select * from `money` where id &lt; #{id}
</select>

注意上面的sql,小于号实际使用的是 &lt;,不能直接使用 <,比如直接使用小于号,在idea中会有如下的错误提示

日常开发中除了上面的小于号之外,另外一个常见的则是 & 与操作符,如果sql中有位操作的场景,同样需要转义

1
2
3
4
<select id="xxx">
-- select * from `money` where id & 1 = 1 的sql,需要如下转义
select * from `money` where id &amp; 1 = 1
</select>

在mybatis中常见的几个转义字符表映射关系如下表 (mybatis的转义实际上完全遵循的是xml转义规则,主要有下面几个)

符号 转义 说明
< < 小于
> > 大于
& &
' 单引号
" 双引号

2. <![CDATA[ ]]> 写法

通过转义的方式虽然简单,但是有一个问题就是不够直观,在阅读sql时,还需要在脑海里反转义一下,这样就不太友好了,好在xml提供了CDATA的语法,被包裹在它内部的语句,不会被xml解析器进行解析

如通过下面的写法来写与操作

1
2
3
<select id="queryBitCondition" resultType="long">
select id from money where <![CDATA[ `money` & #{bit} = #{bit} ]]>
</select>

使用这种方式时,需要注意:

  • 不支持嵌套的写法
  • 结尾符 ]]> 注意与起始符配套使用

III. 不能错过的源码和相关知识点

0. 项目

系列博文:

1. 微信公众号: 一灰灰Blog

尽信书则不如,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激

下面一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛

一灰灰blog


打赏 如果觉得我的文章对您有帮助,请随意打赏。
分享到