概述
如果想看如果CDATA在mybatis的xml文件中使用的可以直接跳转。
CDATA
- 1 XML中的CDATA
- 1.1 为什么叫CDATA
- 1.2 CDATA在XML中的语法
- 1.3 CDATA在XML中的例子
- 1.4 CDATA规则
- 2 Mybatis中的CDATA
- 2.1 Mybatis中使用XML转义序列转义
- 2.2 Mybatis中使用CDATA转义
- 2.3 mybatis中使用CDATA需注意的点
1 XML中的CDATA
1.1 为什么叫CDATA
CDATA很明显不是个单词,为什么叫CDATA,其实在英文里是Character Data的缩写,直译是字符数据。也就是我们不想让解析器解释为标记,而是想让解析器解释为字符也就是Character的数据,我们就用CDATA来处理。比如这五种特殊字符 <, >,&,"和’。
1.2 CDATA在XML中的语法
<![CDATA[
characters with markup
]]>
以上语法由三部分组成
- CDATA的开始部分:以 <![CDATA[ 这九个定界符开始
- CDATA的结束部分:以 ]]> 结束
- CData也就是字符数据的部分:在开始和结束部分之间填入的所有字符,都会被XML处理器忽略,包括其中的特殊字符 (<、> 和 &)。
1.3 CDATA在XML中的例子
<script>
<![CDATA[
<message> Welcome to TutorialsPoint </message>
]] >
</script >
上述的语句中,< message > 和 < /message > 之间的所有内容都被视为字符数据而不是标记。
1.4 CDATA规则
XML CDATA 需要遵循给定的规则
- CDATA 不能在 XML 文档的任何位置包含字符串“]]>”。
- CDATA 部分不允许嵌套。
2 Mybatis中的CDATA
都是CDATA,我为什么把两者分开来讲,是因为我觉得在Mybatis中使用CDATA和单纯的在XML中使用CDATA有区别。
2.1 Mybatis中使用XML转义序列转义
特殊字符 | 转义序列 |
---|---|
< | <; |
》 | >; |
& | &; |
" | "; |
’ | &apos; |
例如
<select id="userInfo" parameterType="java.util.HashMap" resultMap="user">
SELECT id,newTitle, newsDay FROM newsTable WHERE 1=1
AND newsday > #{startTime}
AND newsday > #{endTime}
</select>
2.2 Mybatis中使用CDATA转义
为了防止五种特殊字符 <, >,&,"和’ 被解析器转义,就用 <![CDATA[ ]]> 来包含这些字符。
例如:
<select id="userInfo" parameterType="java.util.HashMap" resultMap="user">
SELECT id,newTitle, newsDay FROM newsTable WHERE 1=1
AND newsday <![CDATA[>=]]> #{startTime}
AND newsday <![CDATA[<= ]]>#{endTime}
]]>
</select>
2.3 mybatis中使用CDATA需注意的点
上述两者转义方法中,大家都会推荐使用CDATA来进行转义,但是有一点需要大家注意。
在被CDATA包围的所有字符串不会被mybatis解析, 直接写入sql了,CDATA应该只用在特殊字符前后,不能用在< if > < foreach >等标签前面,否则可能会导致mybatis的查询失败。
最后
以上就是顺利流沙为你收集整理的XML中的CDATA且mybatis中特殊字符转义的全部内容,希望文章能够帮你解决XML中的CDATA且mybatis中特殊字符转义所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复