方案一、使用转义字符
| 特殊字符 | 转义字符 |
|---|---|
| < | < |
| > | > |
| & | & |
| " | " |
| ’ | ' |
| <= | <= |
| >= | >= |
<if test="startTime != null">
AND time >= #{startTime}
</if>
方案二、使用xml的![CDATA[ ]]语法
<![CDATA[ ]]>是xml语法,在<![CDATA[ ]]>内部的所有内容都会被解析器忽略,不进行转义。所以在xml中这是一种通用方案。
| 特殊字符 | <![CDATA[ ]]> |
|---|---|
| < | <![CDATA[<]]> |
| > | <![CDATA[>]]> |
| & | <![CDATA[&]]> |
| " | <![CDATA["]]> |
| ’ | <![CDATA[']]> |
| <= | <![CDATA[<=]]> |
| >= | <![CDATA[>=]]> |
| != | <![CDATA[!=]]> |
注意事项
不能直接把 Mybatis 中的逻辑判断全部包住,因为还有标签有使用特殊字符<>,所以尽可能缩小范围,写在条件中
<if test="startTime != null">
AND <![CDATA[ time >= #{startTime}]]>
</if>
博客介绍了MyBatis处理特殊字符的两种方案,一是使用转义字符,二是使用xml语法,xml语法内部内容不转义是通用方案。同时给出注意事项,不能全包逻辑判断,要缩小范围写在条件中。

3685





