在MyBatis中使用<、<=?等特殊符號詳解
在實(shí)際的開發(fā)中,經(jīng)常會遇到一些場景,比如查詢小于某個(gè)時(shí)間,或者是查詢小于某個(gè)年齡等。
這個(gè)時(shí)候就需要在 MyBatis
的 XML
文件中使用一些 <、<=
等符號,但是如果直接使用的話文件會報(bào)錯(cuò):
Tag name expected
這個(gè)時(shí)候處理的話一般有以下三種方式:
1. 直接Java 處理(不推薦)
這種方法其實(shí)就是通過 #{param}
或者是 ${param}
直接在 Java 代碼中手動拼接,作為參數(shù)傳入,這樣寫的話代碼不方便維護(hù),現(xiàn)在一般的話也很少有這樣的寫的,所以在這里就不說了。
2. 特殊符號轉(zhuǎn)義
可以通過轉(zhuǎn)義的方式去實(shí)現(xiàn)。
轉(zhuǎn)義也有好處,就是可讀性上有些差,如果忘了轉(zhuǎn)義字符的話還需要再次查,比較耗時(shí),反正到現(xiàn)在有的時(shí)候我還是會忘記。
符號 | 轉(zhuǎn)義字符 | 描述 |
---|---|---|
< | < | 小于,需轉(zhuǎn)義 |
<= | <= | 小于等于,需轉(zhuǎn)義 |
> | > | 大于,無需轉(zhuǎn)義 |
>= | >= | 大于等于,無需轉(zhuǎn)義 |
& | & | 和,沒遇到相應(yīng)場景 |
' | ' | 單引號,沒遇到相應(yīng)場景 |
'' | " | 雙引號,單引號,沒遇到相應(yīng)場景 |
3. 硬核方法:<![CDATA[ ]]>
其實(shí)這個(gè)不是 MyBaits
層面的處理,而是 XML
層面的處理,加上 <![CDATA[ ]]>
之后,在其里面的所有內(nèi)容將不會被解析,會原樣的被 MyBatis
拼接到 SQL
中,
使用方法如下:
<select id="list" resultType="com.study.mybatisdemo.model.SystemUser"> select * from system_user <where> <if test="age != null"> <![CDATA[ age < #{age} ]]> </if> <if test="id != null"> <![CDATA[ AND id < #{id} ]]> </if> </where> </select>
但是這里要注意 <![CDATA[ ]]>
的范圍,就和上面的例子一樣,<where>
與 <if>
標(biāo)簽是 MyBaits
提供的,如果也將它們放在 <![CDATA[ ]]>
里面的話,會導(dǎo)致 MyBatis
無法解析這些動態(tài) SQL
標(biāo)簽。
反例(錯(cuò)誤的使用):
<select id="list" resultType="com.study.mybatisdemo.model.SystemUser"> select * from system_user <![CDATA[ <where> <if test="age != null"> age < #{age} </if> <if test="id != null"> AND id < #{id} </if> </where> ]]> </select>
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Springboot集成ClickHouse及應(yīng)用場景分析
這篇文章主要介紹了Springboot集成ClickHouse的實(shí)例代碼,本文通過應(yīng)用場景實(shí)例代碼介紹了整合springboot的詳細(xì)過程,感興趣的朋友跟隨小編一起看看吧2022-02-02MyBatisPlus條件構(gòu)造器的實(shí)現(xiàn)示例
本文主要介紹了MyBatisPlus條件構(gòu)造器的實(shí)現(xiàn)示例,主要包括了QueryWrapper,UpdateWrapper,LambdaQueryWrapper,LambdaUpdateWrapper這四種,具有一定的參考價(jià)值,感興趣的可以了解下2023-12-12解決spring boot hibernate 懶加載的問題
這篇文章主要介紹了解決spring boot hibernate 懶加載的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10Mybatis的collection三層嵌套查詢方式(驗(yàn)證通過)
這篇文章主要介紹了Mybatis的collection三層嵌套查詢方式(驗(yàn)證通過),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03