zoukankan      html  css  js  c++  java
  • SpringBoot系列Mybatis之转义符的使用姿势

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

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

    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. 写法

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

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

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

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

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

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

    0. 项目

    系列博文:

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

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

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

    一灰灰blog

  • 相关阅读:
    SQL考点例题解析
    数据交换技术
    网络安全的攻击手段
    实词和虚词
    VBA代码
    宏代码
    常用模块
    常用模块
    模块和包
    模块介绍
  • 原文地址:https://www.cnblogs.com/yihuihui/p/15345171.html
Copyright © 2011-2022 走看看