MyBatis中特殊符號(hào)的轉(zhuǎn)義
描述
MyBatis中特殊符號(hào)的轉(zhuǎn)義,有兩種方式轉(zhuǎn)義。
第一種
描述 | 空格 | 小于 | 大于 | 小于等于 | 大于等于 | 與 | 單引號(hào) | 雙引號(hào) |
---|---|---|---|---|---|---|---|---|
原符號(hào) | < | > | <= | >= | & | ’ | " | |
轉(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>
在編寫(xiě)MyBatis的XML映射文件時(shí),對(duì)于需要在SQL語(yǔ)句中使用的這些特殊字符,應(yīng)當(dāng)使用上表中的轉(zhuǎn)義寫(xiě)法。例如,如果你想在<if>標(biāo)簽中使用大于號(hào),你應(yīng)該這樣寫(xiě):
<if test="value > 10"> ... </if>
這樣,當(dāng)MyBatis解析XML文件時(shí),會(huì)將>正確地解釋為大于號(hào)(>),而不會(huì)與XML標(biāo)簽的結(jié)束符混淆。
同理,如果需要在SQL語(yǔ)句中使用小于號(hào),應(yīng)該使用<。例如:
<if test="value < 10"> ... </if>
對(duì)于其他特殊字符,如你需要在SQL語(yǔ)句中包含一個(gè)字面上的&字符,你應(yīng)該寫(xiě)成&,以免XML解析器將其誤認(rèn)為是一個(gè)實(shí)體的開(kāi)始。
第二種
使用 <![CDATA[>=]]> 進(jìn)行轉(zhuǎn)義
<select id = "selectUserByAge" resultType="com.test.hiioc.model.UserTable" > select id,userName,age from userTable <where> IS_DELETE = 1 /*時(shí)間段查詢(xún)*/ <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
注意事項(xiàng)
- 當(dāng)使用<![CDATA[ ... ]]>時(shí),需要注意不要讓]]>出現(xiàn)在你的SQL語(yǔ)句中,因?yàn)檫@是CDATA區(qū)塊的結(jié)束標(biāo)記。
- 在某些情況下,混合使用CDATA和轉(zhuǎn)義字符可能會(huì)使SQL語(yǔ)句更清晰易讀,尤其是在SQL語(yǔ)句非常長(zhǎng)或復(fù)雜時(shí)。
到此這篇關(guān)于MyBatis中特殊符號(hào)的轉(zhuǎn)義的文章就介紹到這了,更多相關(guān)MyBatis 特殊符號(hào)轉(zhuǎn)義內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MyBatis使用注解開(kāi)發(fā)和無(wú)主配置文件開(kāi)發(fā)的情況
這篇文章主要介紹了MyBatis使用注解開(kāi)發(fā)和無(wú)主配置文件開(kāi)發(fā)的情況,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03關(guān)于ArrayList初始創(chuàng)建設(shè)定長(zhǎng)度問(wèn)題
在使用ArrayList時(shí),初始化長(zhǎng)度并不等同于直接設(shè)定數(shù)組大小,如通過(guò)構(gòu)造函數(shù)指定長(zhǎng)度,僅僅是在內(nèi)部開(kāi)辟了相應(yīng)的存儲(chǔ)空間,并不會(huì)改變ArrayList的實(shí)際元素個(gè)數(shù),即size屬性仍然為0,因此,嘗試直接訪問(wèn)未實(shí)際添加元素的位置會(huì)引發(fā)異常2024-11-11Java中的while無(wú)限循環(huán)結(jié)構(gòu)及實(shí)例
這篇文章主要介紹了Java中的while無(wú)限循環(huán)結(jié)構(gòu)及實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01SpringBoot解決406錯(cuò)誤之返回對(duì)象缺少Getter/Setter方法引發(fā)的問(wèn)題
在Spring Boot開(kāi)發(fā)中,接口請(qǐng)求返回?cái)?shù)據(jù)是系統(tǒng)交互的重要環(huán)節(jié),然而,開(kāi)發(fā)過(guò)程中常常會(huì)遇到由于數(shù)據(jù)類(lèi)型或返回格式問(wèn)題導(dǎo)致的錯(cuò)誤,其中最常見(jiàn)的就是406 Not Acceptable異常,本篇文章以實(shí)際的案例出發(fā),詳細(xì)分析在POST請(qǐng)求中產(chǎn)生406錯(cuò)誤的原因2024-11-11SpringBoot整合Java Web三大件的詳細(xì)過(guò)程
這篇文章主要介紹了SpringBoot整合Java Web三大件的詳細(xì)過(guò)程,注冊(cè)自定義的Servlet、Filter、Listener組件到springboot內(nèi)嵌的Servlet容器,讓它們發(fā)揮自己的作用,需要的朋友可以參考下2025-04-04EDI中JAVA通過(guò)FTP工具實(shí)現(xiàn)文件上傳下載實(shí)例
這篇文章主要介紹了EDI中JAVA通過(guò)FTP工具實(shí)現(xiàn)文件上傳下載實(shí)例,具有一定的參考價(jià)值,有需要的可以了解一下。2016-11-11Mybatis?在?insert?插入操作后返回主鍵?id的操作方法
這篇文章主要介紹了Mybatis?在?insert?插入操作后返回主鍵?id的操作方法,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-12-12