MyBatis中CDATA的作用

本文介绍了CDATA在XML文档解析中的作用,特别是在处理SQL中的特殊字符,以及与转义字符的区别。特别提到在MyBatis中如何使用CDATA来避免解析器错误。

一、<![CDATA[]]>简介

在XML文档的解析过程中,首先查找元素的起始符,即字符"<“和字符”&“。字符”<“表示为新元素的开始,字符”&"表示为字符实体的开始。CDATA的作用是保护这些特殊字符(例如,小于号<等)不被解析。

二、<![CDATA[]]>使用注意事项

使用<![CDATA[]]>来包含不被XML解析器解析的内容。但要注意的是:不允许嵌套使用;不能再包含"]]>"。

三、<![CDATA[]]>在MyBatis的使用

在使用 MyBatis 过程中,有时我们的 SQL 是写在 XML 映射文件中,如果写的 SQL 中有一些特殊的字符的话,在解析 XML 文件的时候会被当做 XML 自身元素,但我们不希望如此操作,所以我们要使用<![CDATA[ ]]>来解决。如下所示:

<select id="getBlogs" resultType="Blog">
  <![CDATA[
    select * from t_blog where id < #{blogId}
  ]]>
</select>

四、转义字符

如果不想使用<![CDATA[]]>,那么请使用转义字符,效果一样的:

转义字符原字符说明
&lt;<小于
&gt;大于
&amp;&和号
&apos;'单引号
&quot;"双引号

提示:严格地讲,在 XML 中仅有字符"<“和”&"是非法的。省略号、引号和大于号是合法的,但是把它们替换为实体引用是个好的习惯,从而避免歧义。

五、<![CDATA[ ]]>和XML转义字符的关系

它们的功能是一样的,只是应用场景有些不同:

  1. <![CDATA[]]>不能适用所有情况,转义字符可以;
  2. 对于短字符串<![CDATA[]]>写起来繁琐,对于长字符串转义字符可读性差;
  3. <![CDATA[]]>表示XML解析器忽略解析,所以更快一些。

参考原文:https://www.jianshu.com/p/e1cf9c52c2a7

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值