为什么的Mapper文件中的"<"、">" 要转成“< ;”、“> ;”
mybatis的Mapper文件中的大于小于号,为什么要转成“< ;”、“> ;”,转义后的lt、gt又代表什么?
为什么的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 ;”这些转移字符都是什么含义呢?