10.MyBatis中特殊字符的处理
MyBatis中<![CDATA[]]>
的作用
在使用MyBatis时SQL语句写在xml映射文件中,SQL语句中的特殊字符在解析xml文件的时候会被转义,<
,>
,&
等字符不能直接存入xml中,否则xml语法检查时会报错。
Example:
1 | <id> id < 30</id> |
上面这种写法会报错。
如果想在xml中使用这些符号,不希望特殊字符被转义,有两种解决方法:
使用转义字符,如
<
,>
,&
。使用
<![CDATA[ ]]>
1. 转义字符
1 | <id> id < 30 </id> |
在读取的时候,解析器会自动将这些转义字符转换回<
,>
,&
。
XML的转义字符有:
特殊字符 | 转义字符 |
---|---|
& | & |
< | < |
> | > |
“ | " |
‘ | ' |
严格来说,在XML中只有”<”和”&”是非法的,其它三个都是可以合法存在的,但是把它们都进行转义是一个好的习惯。 |
Note:
转义序列字符之间不能有空格;
转义序列必须以”;”结束;
单独出现的”&”不会被认为是转义的开始;
区分大小写。
2. <![CDATA[ ]]>
<![CDATA[ ]]>
是xml语法,在CDATA内部的所有内容会被解析器忽略。
可以将包含特殊字符的文本放入<![CDATA[ ]]>
。
Note:
<![CDATA[ ]]>
中的文本不能再包含”]]>”;<![CDATA[ ]]>
不允许嵌套使用;<![CDATA[ ]]>
中的文本不能包含空格或者换行。
3. 转义字符和<![CDATA[ ]]>
相同点:
<![CDATA[ ]]>
和转义字符功能相同:
不同点:
<![CDATA[ ]]>
适合长文本,转义字符适合短文本。<![CDATA[ ]]>
表示xml解析器忽略解析,所以更快。