为什么的Mapper文件中的"<"、">" 要转成“< ;”、“> ;”
问题分析
mybatis中的mapper文件是xml文件,不允许出现类似“>”这样的字符,会与文件本身的标签"<xxx>"冲突,
就像mysql中有些关键字(如:select、insert等)不允许当做字段名,会引起冲突;
处理方式
1.用转义字符把>和<替换掉,使后台能够正常解析这个xml文件
XML中需要转义的字符有:
字段 | 符号 | 说明 |
---|---|---|
< ; | < | 小于号 |
> ; | > | 大于号 |
& ; | & | 和 |
&apos ; | ' | 单引号 |
" ; | " | 双引号 |
原SQL
select * from table where createTime >'2019-10-10' and createTime <= '2019-10-20'
修改后SQL:
select * from table where createTime > '2019-10-10' and createTime <= '2019-10-20'
2.增加声明标志:<![CDATA[]]>
被<![CDATA[]]>这个标记所包含的内容将表示为纯文本,后台会原样解析并执行
SELECT *FROM table
<where>
<!-- 录入日期 范围 -->
<if test="date_st != '' and date_ed != ''">
<![CDATA[
and createTime >= #{date_st} and createTime =< #{date_ed}
]]>
</if>
</where>
’另外“< ;”,“> ;”,“&ge ;”这些转移字符都是什么含义呢?