在MyBatis中处理大于号和小于号时,应使用XML实体引用或CDATA区块。推荐方法一是将>替换为>、

在使用 MyBatis 编写 XML 映射文件时,如果在 SQL 语句中使用了大于号(>)或小于号(),可能会导致 XML 解析错误。这是因为 XML 本身将 和 > 视为标签的开始和结束符号。因此,直接写 > 或 会被解析器误认为是语法错误。
使用 XML 实体引用转义特殊字符
最简单且推荐的方式是使用 XML 预定义的实体引用对特殊字符进行转义:
- 替换为 zuojiankuohaophpcn
- > 替换为 youjiankuohaophpcn
- & 替换为 &
- " 替换为 "
- ' 替换为 '
例如,原 SQL 中有:
18 AND score < 100]]>
应改为:
使用 CDATA 区块包裹 SQL 条件
另一种更直观的方法是使用 CDATA 区块,这样区块内的所有内容都会被解析器视为纯文本,无需转义。
示例:
这种方式适合包含多个比较操作符或复杂逻辑的 SQL,代码可读性更高。
注意事项与建议
虽然 CDATA 使用方便,但需注意以下几点:
- 不能嵌套 CDATA 块。
- 如果 SQL 中动态拼接字段(如使用
${}),仍需注意 SQL 注入风险。 - 尽量使用
#{}]占位符方式传参,更安全。
对于简单的条件判断,使用实体转义即可;若条件较多或涉及复杂表达式,推荐使用 CDATA 提高可维护性。
基本上就这些,合理选择转义方式能让 MyBatis 的 XML 映射文件既安全又清晰。










