MyBatis中<![CDATA[]]>的作用
1、<![CDATA[]]>简介
在XML文档的解析过程中,首先查找元素的起始符,即字符"<"和字符"&"。字符"<"表示为新元素的开始,字符"&"表示为字符实体的开始。CDATA的作用是保护这些特殊字符(例如,小于号<等)不被解析。
2、<![CDATA[]]>使用注意事项
使用<![CDATA[]]>来包含不被XML解析器解析的内容。但要注意的是:不允许嵌套使用;不能再包含"]]>"。
3、<![CDATA[]]>在MyBatis的使用
在使用MyBatis过程中,有时我们的SQL是写在XML 映射文件中,如果写的SQL中有一些特殊的字符的话,在解析XML文件的时候会被当做XML自身元素,但我们不希望如此操作,所以我们要使用<![CDATA[ ]]>来解决。如下所示:
<select id="getBlogs" resultType="Blog">
<![CDATA[
select * from t_blog where id < #{blogId}
]]>
</select>
4、转义字符
如果不想使用<![CDATA[]]>,那么请使用转义字符,效果一样的:
< | < | 小于 |
> | > | 大于 |
& | & | 和号 |
' | ' | 省略号 |
" | " | 引号 |
提示:严格地讲,在 XML 中仅有字符 "<"和"&" 是非法的。省略号、引号和大于号是合法的,但是把它们替换为实体引用是个好的习惯,从而避免歧义。
5、<![CDATA[]]>和XML转义字符的关系
最后,说说<![CDATA[]]>和XML转义字符的关系,它们的功能就是一样的,只是应用场景有些不同:
(1)<![CDATA[]]>不能适用所有情况,转义字符可以;
(2) 对于短字符串<![CDATA[]]>写起来繁琐,对于长字符串转义字符可读性差;
(3) <![CDATA[]]>表示XML解析器忽略解析,所以更快一些。