2023-05-29 22:35阅读: 109评论: 0推荐: 0

开发手记:MyBatis的mapper文件的中SQL符号转义

字符转义问题

在 MaBatis 的 XML 文件中编写SQL语句时,<符号会出现转义问题,例如:

<!--查询指定月份内的订单-->
<select id="queryInRange" resultType="OrderEntity">
SELECT * FROM order
WHERE create_time > DATE_SUB(NOW(), INTERVAL #{month} MONTH)
AND user_id = #{id};
</select>

会出现这种问题的原因是:<会与构成 XML 标签的<>解析冲突

解决方案

  1. 通过转义符

    原符号 < <= > >= & ' "
    替换符号 &lt; &lt;= &gt; &gt;= &amp; &apos; &quot;
  2. 通过CDATA

    CDATA(Character Data)块是 XML 的一种语法结构,不是 MyBatis 特有的。它用于将文本数据视为纯文本,而不进行 XML 解析。

    <select id="queryInRange" resultType="OrderEntity">
    SELECT * FROM order
    WHERE create_time <![CDATA[>]]> DATE_SUB(NOW(), INTERVAL #{month} MONTH)
    AND user_id = #{id};
    </select>

本文作者:YaosGHC

本文链接:https://www.cnblogs.com/yaocy/p/17441891.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   YaosGHC  阅读(109)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起