字符转义问题
在 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 标签的<>
解析冲突
解决方案
-
通过转义符
原符号 <
<=
>
>=
&
'
"
替换符号 <
<=
>
>=
&
'
"
-
通过
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>