MyBatis在xml中写sql语句,使用 '<' '>' 特殊符号 ,它会把这两个符号认为标签,所以会报错。
方法一 : 采用xml转义字符
< | < | 小于号 |
> | > | 大于号 |
& | & | 和 |
' | ’ | 单引号 |
" | " | 双引号 |
*以上表格是xml转义字符表,和MyBatis没关系
案例:
<select id="" resultType="">
SELECT *
FROM tb_visitlog
WHERE
createtime < #{endDate}
AND
createtime > #{beginDate}
</select>
方法二:采用xml的<![CDATA[]]>语句(此语句内部的所有内容都会被解析器忽略,应此跳过MyBatis对xml语法检查)
*此方法跳过了MyBatis语法检查,所以使用时,不能在<![CDATA[]]>中写入MyBatis标签(<if test=""> </if> <where> </where> <choose> </choose> <trim> </trim>等都不可以)。
案例:
<select id="" resultType="">
SELECT *
FROM tb_visitlog
<if test="endDate != null and beginDate != null ">
<![CDATA[
WHERE
createtime < #{endDate}
AND
createtime > #{beginDate}
]]>
</if>
</select>
个人比较喜欢此方法