java - mybatis中﹤![CDATA[ ]]> 的使用
高洛峰
高洛峰 2017-04-18 09:47:44
0
4
490

<sql id="MysqlDialectSuffix">

<!--
  WARNING - @mbggenerated
  This element is automatically generated by MyBatis Generator, do not modify.
  This element was generated on Thu Oct 10 09:46:29 CST 2013.
-->
<if test="page != null">
  <![CDATA[ limit #{page.begin}, #{page.length} ) as temp_page_table) ]]>
  <if test="orderByClause != null">
    order by ${orderByClause}
  </if>
</if>

</sql>
上述代码是利用mybatis的generator自动生成的代码,为什么要加﹤![CDATA[ ]]>呢?感觉完全没有必要的啊,里面的SQL语句并没有破坏xml文档结构,或引起sql错误的啊?为什么呢?

=============================================================

补充说明,我知道它的用法,我只是不明白sql的分页
limit #{page.begin}, #{page.length} ) as temp_page_table)
这个语句,为什么要加<![CDATA[]]>呢?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回覆(4)
PHPzhong

在 XML 元素中,"""&" 也會產生錯誤,因為解析器會把該字元解釋為字元實體的開始。
某些文本,例如 JavaScript 程式碼,包含大量 "CDATA 部分中的所有內容都會被解析器忽略。
假設有這麼一個SQL

SELECT * FROM users WHERE registerAt > 100

如果不用CDATA封裝,xml解析器回去解析,結果遇到">"會導致文件結構錯誤

黄舟

你這段sql是沒有,它應該是統一加的CDATA,防止你的sql裡面出現諸如"

巴扎黑

理論上這個limit是沒有必要加上這個,我用的limit分頁是從來不用加上的,不過具體的你還是測試下,去除掉之後會不會報錯,防止"

阿神

W3C XML CDATA
CDATA與MyBatis並沒有關係。

術語 CDATA 指的是不應由 XML 解析器進行解析的文字資料(Unparsed Character Data)。 CDATA 部分中的所有內容都會被解析器忽略。
至於你的XML中即使沒有錯誤但是也增加了CDATA,樓主也說了是通過generator自動生成的代碼,既然是自動生成的那工具自然沒有人那麼聰明,只用最為通用的方式進行處理,這也無可後非。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!