Mybatis 中使用CDATA

CDATA是什么

  • CDATA 是由XML定义的,跟Mybatis没啥关系。
  • CDATA 指的是不由 XML 解析器进行解析的文本数据。被<![CDATA[]]>这个标记所包含的内容将表示为纯文本,比如<![CDATA[<]]>表示文本内容“<”。
  • 全名:character data
  • <![CDATA[]]>表示xml解析器忽略解析,比使用转义字符更快。

CDATA用法

  • sql中有一些特殊的字符,在解析xml文件的时候会被转义。使用CDATA可以避免此类情况。比如包含”<”、”>”、”&”等字符,最好把他们都放到CDATA中。

CDATA写法

  • <![CDATA[文本内容]]>
  • CDATA的文本内容中不能出现字符串"]]>"
  • CDATA不能嵌套。
  • "]]>"这部分不能包含空格或者换行

CDATA的缺点

  • mybatis中的<if test=""></if>、<where></where>、<choose></choose>、<trim></trim> 等这些标签不能写到CDATA中。否则标签将不会被mybatis解析。
<select id="getNewDlpOpenCallOrder" resultType="org.apache.commons.collections.map.CaseInsensitiveMap" parameterType="map" >
    <![CDATA[
    select s.*
    from xxx s
    where s.status<5
    ]]>
    <if test="dateBegin != null and dateEnd != null" >
      <![CDATA[and s.zb_ordertime between #{dateBegin,jdbcType=TIMESTAMP} and #{dateEnd,jdbcType=TIMESTAMP}]]>
    </if>
  </select>
  • CDATA不能适用所有情况,转义字符可以;
  在XML中,需要转义的字符有: 
  (1)&  	&amp; 
  (2)<  	&lt; 
  (3)>  	&gt; 
  (4)" 	&quot; 
  (5)'  &apos; 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值