mybatis中﹤![CDATA[ ]]> 的使用

<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[]]>呢?


潇湘沐
浏览 1600回答 4
4回答

天涯尽头无女友

你这段sql是没有,它应该是统一加的CDATA,防止你的sql里面出现诸如"<"、"&"这种XML非法字符我的意思是他不管三七二十一都会对SQL加上这段,防止出现XML非法字符。就算有的SQL没有,他也会加,反正加了也不会错。宁可错杀,不能放过。

慕标5832272

理论上这个limit是没有必要加上这个,我用的limit分页是从来不用加上的,不过具体的你还是测试下,去除掉之后会不会报错,防止"<"这类符号在mybatis中不认

炎炎设计

W3C XML CDATACDATA与MyBatis并没有关系。术语 CDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Data)。CDATA 部分中的所有内容都会被解析器忽略。至于你的XML中即使没有错误但是也增加了CDATA,楼主也说了是通过generator自动生成的代码,既然是自动生成的那工具自然没有人那么聪明,只用最为通用的方式进行处理,这也无可后非。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java