mybatis的Mapper文件中的大于小于号,为什么要转成“< ;”、“> ;”,转义后的lt、gt又代表什么?

为什么的Mapper文件中的"<"、">" 要转成“&lt ;”、“&gt ;”

问题分析

mybatis中的mapper文件是xml文件,不允许出现类似“>”这样的字符,会与文件本身的标签"<xxx>"冲突,

就像mysql中有些关键字(如:select、insert等)不允许当做字段名,会引起冲突;

处理方式

1.用转义字符把>和<替换掉,使后台能够正常解析这个xml文件

XML中需要转义的字符有:

字段 符号 说明
&lt ; < 小于号
&gt ; > 大于号
&amp ; &
&apos ; ' 单引号
&quot ; " 双引号
原SQL

select * from table where createTime >'2019-10-10' and createTime <= '2019-10-20' 

修改后SQL:

select * from table where createTime &gt; '2019-10-10' and createTime &lt;= '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>

’另外“&lt ;”,“&gt ;”,“&ge ;”这些转移字符都是什么含义呢?

EQ: EQUAL   →   等于
NE: NOT EQUAL  →   不等于
GT: GREATER THAN   →    大于 
LT : LESS THAN   →   小于
GE: GREATER THAN OR EQUAL   →   大于等于
LE: LESS THAN OR EQUAL   →   小于等于

发布了52 篇原创文章 · 获赞 122 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_39390545/article/details/103355216