MyBatis中特殊符號的轉(zhuǎn)義
描述
MyBatis中特殊符號的轉(zhuǎn)義,有兩種方式轉(zhuǎn)義。
第一種
描述 | 空格 | 小于 | 大于 | 小于等于 | 大于等于 | 與 | 單引號 | 雙引號 |
---|---|---|---|---|---|---|---|---|
原符號 | < | > | <= | >= | & | ’ | " | |
轉(zhuǎn)義符 | | < | > | <= | >= | & | ' | " |
<select id = "selectUserByAge" resultType="com.test.hiioc.model.UserTable" > select id,userName,age from userTable <where> 1 = 1 <if test = "userTable.startDate!=null"> SIGNING_DATE >= #{userTable.startDate} </if> <if test = "userTable.endDate != null"> and SIGNING_DATE <= #{userTable.endDate} </if> </where> </select>
在編寫MyBatis的XML映射文件時,對于需要在SQL語句中使用的這些特殊字符,應當使用上表中的轉(zhuǎn)義寫法。例如,如果你想在<if>標簽中使用大于號,你應該這樣寫:
<if test="value > 10"> ... </if>
這樣,當MyBatis解析XML文件時,會將>正確地解釋為大于號(>),而不會與XML標簽的結(jié)束符混淆。
同理,如果需要在SQL語句中使用小于號,應該使用<。例如:
<if test="value < 10"> ... </if>
對于其他特殊字符,如你需要在SQL語句中包含一個字面上的&字符,你應該寫成&,以免XML解析器將其誤認為是一個實體的開始。
第二種
使用 <![CDATA[>=]]> 進行轉(zhuǎn)義
<select id = "selectUserByAge" resultType="com.test.hiioc.model.UserTable" > select id,userName,age from userTable <where> IS_DELETE = 1 /*時間段查詢*/ <if test = "userTable.startDate != null"> and SIGNING_DATE <![CDATA[>=]]> #{userTable.startDate} </if> <if test = "userTable.endDate!=null"> and SIGNING_DATE <![CDATA[<=]]> #{userTable.endDate} </if> </where> </select>
代碼舉例2
<if test="demoWay != null and test="demoWay != '' "> <if test="demoWay == 'equal' "> <![CDATA[ and demo_str = #{demoStr} ]]> </if> <if test="demoWay == 'gt' "> <![CDATA[ and demo_str > #{demoStr} ]]> </if> <if test="demoWay == 'lt' "> <![CDATA[ and demo_str < #{demoStr} ]]> </if> <if test="demoWay == 'gte' "> <![CDATA[ and demo_str >= #{demoStr} ]]> </if> <if test="demoWay == 'lte' "> <![CDATA[ and demo_str <= #{demoStr} ]]> </if> </if>
代碼舉例3
SELECT d.`name` dept, count( * ) xx_num, sum( CASE e.result WHEN 1 THEN 1 ELSE 0 END ) qq_num, sum( CASE e.result WHEN 1 THEN 1 ELSE 0 END )/count( * ) qq_percent, sum( CASE WHEN e.xx<![CDATA[>= ]]> 90 THEN 1 ELSE 0 END ) qq1, sum( CASE WHEN e.xx<![CDATA[<= 89 AND e.xx >= ]]> 80 THEN 1 ELSE 0 END ) qq2, sum( CASE WHEN e.xx<![CDATA[<= 79 AND e.xx >= ]]> 70 THEN 1 ELSE 0 END ) qq3, sum( CASE WHEN e.xx<![CDATA[<= 69 AND e.xx >= ]]> 60 THEN 1 ELSE 0 END ) qq4, sum( CASE WHEN e.xx<![CDATA[<= ]]> 59 THEN 1 ELSE 0 END ) qq5 FROM ee e
注意事項
- 當使用<![CDATA[ ... ]]>時,需要注意不要讓]]>出現(xiàn)在你的SQL語句中,因為這是CDATA區(qū)塊的結(jié)束標記。
- 在某些情況下,混合使用CDATA和轉(zhuǎn)義字符可能會使SQL語句更清晰易讀,尤其是在SQL語句非常長或復雜時。
到此這篇關(guān)于MyBatis中特殊符號的轉(zhuǎn)義的文章就介紹到這了,更多相關(guān)MyBatis 特殊符號轉(zhuǎn)義內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MyBatis使用注解開發(fā)和無主配置文件開發(fā)的情況
這篇文章主要介紹了MyBatis使用注解開發(fā)和無主配置文件開發(fā)的情況,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03關(guān)于ArrayList初始創(chuàng)建設定長度問題
在使用ArrayList時,初始化長度并不等同于直接設定數(shù)組大小,如通過構(gòu)造函數(shù)指定長度,僅僅是在內(nèi)部開辟了相應的存儲空間,并不會改變ArrayList的實際元素個數(shù),即size屬性仍然為0,因此,嘗試直接訪問未實際添加元素的位置會引發(fā)異常2024-11-11Java中的while無限循環(huán)結(jié)構(gòu)及實例
這篇文章主要介紹了Java中的while無限循環(huán)結(jié)構(gòu)及實例,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01SpringBoot解決406錯誤之返回對象缺少Getter/Setter方法引發(fā)的問題
在Spring Boot開發(fā)中,接口請求返回數(shù)據(jù)是系統(tǒng)交互的重要環(huán)節(jié),然而,開發(fā)過程中常常會遇到由于數(shù)據(jù)類型或返回格式問題導致的錯誤,其中最常見的就是406 Not Acceptable異常,本篇文章以實際的案例出發(fā),詳細分析在POST請求中產(chǎn)生406錯誤的原因2024-11-11EDI中JAVA通過FTP工具實現(xiàn)文件上傳下載實例
這篇文章主要介紹了EDI中JAVA通過FTP工具實現(xiàn)文件上傳下載實例,具有一定的參考價值,有需要的可以了解一下。2016-11-11Mybatis?在?insert?插入操作后返回主鍵?id的操作方法
這篇文章主要介紹了Mybatis?在?insert?插入操作后返回主鍵?id的操作方法,本文結(jié)合示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-12-12