乐趣区

关于mybatis:SpringBoot系列Mybatis之转义符的使用姿势

【DB 系列】Mybatis 之本义符的应用姿态

在 mybatis 的 xml 文件中间接写 sql 比拟不便简洁,然而须要留神的是,在 xml 文件中,常常会遇到一些须要本义的场景,比方查问 id < xxx 的数据,这个小于号就不能间接写在 sql 中,接下来咱们将看一下,mybatis 中的有哪些本义符,能够怎么解决本义问题

<!– more –>

I. 本义

1. 本义符

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

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

留神下面的 sql,小于号理论应用的是 &lt;,不能间接应用 <,比方间接应用小于号,在 idea 中会有如下的谬误提醒

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

<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 解析器进行解析

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

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

应用这种形式时,须要留神:

  • 不反对嵌套的写法
  • 结尾符 ]]> 留神与起始符配套应用

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

0. 我的项目

  • 工程:https://github.com/liuyueyi/spring-boot-demo
  • 源码:https://github.com/liuyueyi/spring-boot-demo/tree/master/spring-boot/103-mybatis-xml

系列博文:

  • 【DB 系列】Mybatis 系列教程之 CURD 根本应用姿态
  • 【DB 系列】Mybatis 系列教程之 CURD 根本应用姿态 - 注解篇
  • 【DB 系列】Mybatis 之参数传递的几种姿态

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

尽信书则不如,以上内容,纯属一家之言,因集体能力无限,不免有疏漏和谬误之处,如发现 bug 或者有更好的倡议,欢送批评指正,不吝感谢

上面一灰灰的集体博客,记录所有学习和工作中的博文,欢送大家前去逛逛

  • 一灰灰 Blog 集体博客 https://blog.hhui.top
  • 一灰灰 Blog-Spring 专题博客 http://spring.hhui.top

退出移动版