MyBatis 教程

MyBatis 笔记

MyBatis 大于小于 xml 转义操作

MyBatis 笔记 MyBatis 笔记


MyBatis 的 xml 配置中如果直接把包含大于/小于的 sql 写入,提示编译错误,如何解决此类问题?

解释

在 XML 文档中放置了一个类似 "<" 字符,那么这个文档会产生一个错误,这是因为解析器会把它解释为新元素的开始。

这时,针对此类字符需要进行转义,在 XML 中有 5 个预定义的实体引用:

转义 原始 描述
&lt; < 小于
&gt; > 大于
&amp; & 和号
&apos; ' 省略号
&quot; " 引号

除了结合上述提供的 5 个预定义,还可以用 CDATA 标签。

CDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Data)。

在 XML 元素中,"<" 和 "&" 是非法的。

"<" 会产生错误,因为解析器会把该字符解释为新元素的开始。

"&" 也会产生错误,因为解析器会把该字符解释为字符实体的开始。

某些文本,比如 JavaScript 代码,包含大量 "<" 或 "&" 字符。为了避免错误,可以将脚本代码定义为 CDATA。

CDATA 部分中的所有内容都会被解析器忽略。

它的语法如下:

<![CDATA[ xxx ]]>

其中 xxx 就是原始的不需要解释器解析的内容。

示例如下:

    <!--  获取屏蔽 id 列表  -->
    <select id="findBlockIdsListByCursor" resultMap="baseResultMap">
        SELECT
        <include refid="baseColumnList"/>
        FROM
        <include refid="tableName"/>
        WHERE `type` >= 1 AND `type` <![CDATA[ <= ]]> 7 AND status = 1
        AND id > #{cursor}
        ORDER BY id limit #{limit}
    </select>