mybatis中sql語(yǔ)句CDATA標(biāo)簽的用法說(shuō)明
CDATA 指的是不應(yīng)由 XML 解析器進(jìn)行解析的文本數(shù)據(jù)(Unparsed Character Data)。
在 XML 元素中,'<' 和 “&” 是非法的;
“<” 會(huì)產(chǎn)生錯(cuò)誤,因?yàn)榻馕銎鲿?huì)把該字符解釋為新元素的開(kāi)始;
“&” 也會(huì)產(chǎn)生錯(cuò)誤,因?yàn)榻馕銎鲿?huì)把該字符解釋為字符實(shí)體的開(kāi)始;
在mapper文件中寫sql語(yǔ)句時(shí),遇到特殊字符時(shí),如:'<' 等,建議使用 <![CDATA[ sql語(yǔ)句 ]]> 標(biāo)記,將sql語(yǔ)句包裹住,不被解析器解析;
例如:【偽代碼】select id from t_article where create_time <![CDATA[ <= ]]> now();使用CDATA[ ]標(biāo)簽進(jìn)行范圍查詢
在項(xiàng)目中使用mybatis時(shí)的SQL語(yǔ)句是寫在xml映射文件中的,如果想要通過(guò)大于小于或者大于等于小于等于查詢符合范圍的數(shù)據(jù),但是若寫入的SQL語(yǔ)句有一些類似>,<的特殊字符的話,在解析xml文件的時(shí)候會(huì)被轉(zhuǎn)義,但這并不是我們所希望的,所以這個(gè)時(shí)候可以使用<![CDATA[]]>標(biāo)簽來(lái)解決。
<![CDATA[ ]]> 是什么,這是XML語(yǔ)法。在CDATA內(nèi)部的所有內(nèi)容都會(huì)被解析器忽略。
如果文本包含了很多的'<'字符 <=和'&'字符——就象程序代碼一樣,那么最好把他們都放到CDATA部件中。
實(shí)例:<select 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>
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. SQLite中的WAL機(jī)制詳細(xì)介紹2. 一文解析ORACLE樹(shù)結(jié)構(gòu)查詢3. MySQL字段為 NULL的5大坑4. MySQL不使用order by實(shí)現(xiàn)排名的三種思路總結(jié)5. MySQL三大日志(binlog、redo log和undo log)圖文詳解6. SQLite3 命令行操作指南7. 詳解Mysql order by與limit混用陷阱8. 淺談MySQL和mariadb區(qū)別9. 解決mysql錯(cuò)誤:Subquery returns more than 1 row問(wèn)題10. SQLite教程(二):C/C++接口簡(jiǎn)介
