mybatis中sql語句CDATA標簽的用法說明
sql語句CDATA標簽的用法
CDATA 指的是不應由 XML 解析器進行解析的文本數據(Unparsed Character Data)。
在 XML 元素中,”<” 和 “&” 是非法的;
“<” 會產生錯誤,因為解析器會把該字符解釋為新元素的開始;
“&” 也會產生錯誤,因為解析器會把該字符解釋為字符實體的開始;
在mapper文件中寫sql語句時,遇到特殊字符時,如:”<” 等,建議使用 <![CDATA[ sql語句 ]]> 標記,將sql語句包裹住,不被解析器解析;
例如:【偽代碼】
select id from t_article where create_time <![CDATA[ <= ]]> now();
使用CDATA[ ]標簽進行范圍查詢
在項目中使用mybatis時的SQL語句是寫在xml映射文件中的,如果想要通過大於小於或者大於等於小於等於查詢符合范圍的數據,但是若寫入的SQL語句有一些類似>,<的特殊字符的話,在解析xml文件的時候會被轉義,但這並不是我們所希望的,所以這個時候可以使用<![CDATA[]]>標簽來解決。
<![CDATA[ ]]> 是什麼,這是XML語法。在CDATA內部的所有內容都會被解析器忽略。
如果文本包含瞭很多的”<“字符 <=和”&”字符——就象程序代碼一樣,那麼最好把他們都放到CDATA部件中。
實例:
<select id="findList" resultType="FleeceRecord"> SELECT * FROM `fleece_record` <where> <if test="naturalLengthStart != null"> and natural_length<![CDATA[>=]]>#{naturalLengthStart} </if> <if test="naturalLengthEnd != null"> and natural_length<![CDATA[<=]]>#{naturalLengthEnd} </if> </where>
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- MyBatis在DAO層定義接口返回類型泛型無效的解決
- MyBatis註解實現動態SQL問題
- mybatis中映射文件include標簽的應用
- Java經典面試題匯總:Mybatis
- MyBatis中不建議使用where 1=1原因詳解