聊聊Mybatis中sql語句不等于的表示
Mybatis sql語句不等于的表示
如果直接寫
select * from user where id <> 217;
mybatis就會報語法錯誤,<>特殊字符需要轉(zhuǎn)義
如下
select * from user where id <> 217;
使用Mybatis的時候,特殊字符需進(jìn)行轉(zhuǎn)義,如
<> <>
& &
' '
" "
Mybatis 特殊符號(大于,小于,不等于)及常用函數(shù)總結(jié)
1、使用場景
因?yàn)槲覀冊谌粘4aMybatis 動態(tài)拼接語句時候經(jīng)常使用到 大于(>,>=)、小于(<,<=)、不等于(<> ,!=)符號。由于此符號包含了尖括號,Mybatis使用的 *.xml文件格式。于是
需要之內(nèi)尖括號進(jìn)行相關(guān)的轉(zhuǎn)義或者使用 CDATA 區(qū)段。
2、實(shí)現(xiàn)方式
2.1、轉(zhuǎn)義特殊符號方式
注釋:嚴(yán)格地講,在 XML 中僅有字符 "<"和"&" 是非法的。省略號、引號和大于號是合法的,但是把它們替換為實(shí)體引用是個好的習(xí)慣。
符號 | 原符號 | 替換符號 |
---|---|---|
小于 | < | < |
小于等于 | <= | <= |
大于 | > | > |
大于等于 | >= | >= |
不等于 | <> | <> |
與 | & | & |
單引號 | ' | ' |
雙引號 | " | " |
mapper文件寫法:
select * form tablenme t where t.code <> 1
2.2、使用 CDATA 區(qū)段
所有 XML 文檔中的文本均會被解析器解析。只有 CDATA 區(qū)段(CDATA section)中的文本會被解析器忽略。
大于等于 <![CDATA[ >= ]]>
小于等于 <![CDATA[ <= ]]>
不等于<![CDATA[ <> ]]>
mapper文件寫法:
select t.* form tablenme t where t.code <![CDATA[<>]]> 1
3、Mybatis if 判斷等于一個字符串
當(dāng)傳入的type的值為note 的時候,if判斷內(nèi)的sql也不會執(zhí)行。
<if test="type=='note'"> and status = 0 </if>
mybatis是使用的OGNL表達(dá)式來進(jìn)行解析的,在OGNL的表達(dá)式中,'note'會被解析成字符,因?yàn)閖ava是強(qiáng)類型的,char 和 一個String 會導(dǎo)致不等。所以if標(biāo)簽中的sql不會被解析。
需要解決這個問題,只需要把代碼修改成:
<if test='type=="note"'> //注意是雙引號,不是單引號?。?! and status = 0 </if>
4、mysql二進(jìn)制轉(zhuǎn)成字符串
SELECT cast(fieldName as CHAR) FROM tablename
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
springboot+Vue實(shí)現(xiàn)分頁的示例代碼
本文主要介紹了springboot+Vue實(shí)現(xiàn)分頁的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-06-06SrpingDruid數(shù)據(jù)源加密數(shù)據(jù)庫密碼的示例代碼
本篇文章主要介紹了SrpingDruid數(shù)據(jù)源加密數(shù)據(jù)庫密碼的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10基于BigDecimal.setScale的用法小結(jié)
這篇文章主要介紹了基于BigDecimal.setScale的用法小結(jié),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09Java面向?qū)ο髮?shí)現(xiàn)汽車租賃系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Java面向?qū)ο髮?shí)現(xiàn)汽車租賃系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02Java8?CompletableFuture?異步多線程的實(shí)現(xiàn)
本文主要介紹了Java8?CompletableFuture?異步多線程的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04Java ArrayList.add 的實(shí)現(xiàn)方法
這篇文章主要介紹了Java ArrayList.add 的實(shí)現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-11-11JAVA基礎(chǔ)之基本數(shù)據(jù)類型全面解析
下面小編就為大家?guī)硪黄狫AVA基礎(chǔ)之基本數(shù)據(jù)類型全面解析。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-07-07