SpringBoot系列Mybatis之转义符的使用姿势
文章图片
【DB 系列】Mybatis 之转义符的使用姿势在 mybatis 的 xml 文件中直接写 sql 比较方便简洁,但是需要注意的是,在 xml 文件中,经常会遇到一些需要转义的场景,比如查询
id < xxx
的数据,这个小于号就不能直接写在 sql 中,接下来我们将看一下,mybatis 中的有哪些转义符,可以怎么处理转义问题I.转义 1. 转义符
在 mybatis 的 xml 文件中,我们最常见的转义符为小于号,如查询 id 小于 100 的数据
select * from `money` where id <
#{id}
注意上面的 sql,小于号实际使用的是
<
,不能直接使用 <
,比如直接使用小于号,在 idea 中会有如下的错误提示【SpringBoot系列Mybatis之转义符的使用姿势】
文章图片
日常开发中除了上面的小于号之外,另外一个常见的则是
&
与操作符,如果 sql 中有位操作的场景,同样需要转义
-- select * from `money` where id & 1 = 1 的sql,需要如下转义
select * from `money` where id &
1 = 1
在 mybatis 中常见的几个转义字符表映射关系如下表 (mybatis 的转义实际上完全遵循的是 xml 转义规则,主要有下面几个)
符号 | 转义 | 说明 |
---|---|---|
< | < | 小于 |
> | > | 大于 |
& | & | 与 |
' | ' | 单引号 |
" | " | 双引号 |
通过转义的方式虽然简单,但是有一个问题就是不够直观,在阅读 sql 时,还需要在脑海里反转义一下,这样就不太友好了,好在 xml 提供了 CDATA 的语法,被包裹在它内部的语句,不会被 xml 解析器进行解析
如通过下面的写法来写与操作
select id from money where
使用这种方式时,需要注意:
- 不支持嵌套的写法
- 结尾符
]]>
注意与起始符配套使用
- 工程: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 之参数传递的几种姿势
尽信书则不如,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现 bug 或者有更好的建议,欢迎批评指正,不吝感激
下面一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛
- 一灰灰 Blog 个人博客 https://blog.hhui.top
- 一灰灰 Blog-Spring 专题博客 http://spring.hhui.top
文章图片
推荐阅读
- Activiti(一)SpringBoot2集成Activiti6
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- mybatisplus如何在xml的连表查询中使用queryWrapper
- mybatisplus|mybatisplus where QueryWrapper加括号嵌套查询方式
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- 【欢喜是你·三宅系列①】⑶
- SpringBoot调用公共模块的自定义注解失效的解决
- 解决SpringBoot引用别的模块无法注入的问题
- 你不可不知的真相系列之科学