在MyBatis中使用<、<=?等特殊符號詳解
在實際的開發(fā)中,經(jīng)常會遇到一些場景,比如查詢小于某個時間,或者是查詢小于某個年齡等。
這個時候就需要在 MyBatis 的 XML 文件中使用一些 <、<= 等符號,但是如果直接使用的話文件會報錯:
Tag name expected
這個時候處理的話一般有以下三種方式:
1. 直接Java 處理(不推薦)
這種方法其實就是通過 #{param} 或者是 ${param} 直接在 Java 代碼中手動拼接,作為參數(shù)傳入,這樣寫的話代碼不方便維護,現(xiàn)在一般的話也很少有這樣的寫的,所以在這里就不說了。
2. 特殊符號轉(zhuǎn)義
可以通過轉(zhuǎn)義的方式去實現(xiàn)。
轉(zhuǎn)義也有好處,就是可讀性上有些差,如果忘了轉(zhuǎn)義字符的話還需要再次查,比較耗時,反正到現(xiàn)在有的時候我還是會忘記。
| 符號 | 轉(zhuǎn)義字符 | 描述 |
|---|---|---|
| < | < | 小于,需轉(zhuǎn)義 |
| <= | <= | 小于等于,需轉(zhuǎn)義 |
| > | > | 大于,無需轉(zhuǎn)義 |
| >= | >= | 大于等于,無需轉(zhuǎn)義 |
| & | & | 和,沒遇到相應(yīng)場景 |
| ' | ' | 單引號,沒遇到相應(yīng)場景 |
| '' | " | 雙引號,單引號,沒遇到相應(yīng)場景 |
3. 硬核方法:<![CDATA[ ]]>
其實這個不是 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> 標簽是 MyBaits 提供的,如果也將它們放在 <![CDATA[ ]]> 里面的話,會導(dǎo)致 MyBatis 無法解析這些動態(tài) SQL 標簽。
反例(錯誤的使用):
<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é)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot實現(xiàn)ORM操作MySQL的幾種方法
本文主要介紹了SpringBoot實現(xiàn)ORM操作MySQL的幾種方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02
Spring?Boot?啟動參數(shù)之如何優(yōu)雅地控制你的應(yīng)用(最新推薦)
Spring Boot 提供了哪些方式來配置這些啟動參數(shù),今天我們就來詳細解析 Spring Boot 啟動參數(shù)的各種用法,并附帶代碼示例,讓你可以靈活掌控應(yīng)用的啟動過程,需要的朋友可以參考下2025-04-04
SpringBoot全局異常捕獲參數(shù)以及參數(shù)異常的解決方案
這篇文章主要介紹了SpringBoot全局異常捕獲參數(shù)以及參數(shù)異常的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-05-05
java compare compareTo方法區(qū)別詳解
本文主要介紹了java compare compareTo方法區(qū)別,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09
關(guān)于Java數(shù)組查詢的相關(guān)問題及實例
這篇文章主要介紹了關(guān)于Java數(shù)組查詢的相關(guān)問題及實例,需要的朋友可以參考下。2017-08-08
IntelliJ IDEA 2023.2正式發(fā)布新UI和Profiler轉(zhuǎn)正(最新推薦)
北京時間2023年7月26日,IntelliJ IDEA 2023.2正式發(fā)布,IntelliJ IDEA 2023.2 引入 AI Assistant(AI助手),通過一組由 AI 提供支持的功能助力開發(fā),今天給大家分享IntelliJ IDEA 2023.2正式發(fā)布新UI和Profiler轉(zhuǎn)正,感興趣的朋友一起看看吧2023-10-10

