聊聊Mybatis中sql語句不等于的表示
select * from user where id <> 217;
mybatis就會報語法錯誤,<>特殊字符需要轉(zhuǎn)義
如下select * from user where id <> 217;
使用Mybatis的時候,特殊字符需進行轉(zhuǎn)義,如
<> <>
& &
' ’
" '
Mybatis 特殊符號(大于,小于,不等于)及常用函數(shù)總結(jié)1、使用場景因為我們在日常代碼Mybatis 動態(tài)拼接語句時候經(jīng)常使用到 大于(>,>=)、小于(<,<=)、不等于(<> ,!=)符號。由于此符號包含了尖括號,Mybatis使用的 *.xml文件格式。于是
需要之內(nèi)尖括號進行相關(guān)的轉(zhuǎn)義或者使用 CDATA 區(qū)段。
2、實現(xiàn)方式2.1、轉(zhuǎn)義特殊符號方式
注釋:嚴格地講,在 XML 中僅有字符 '<'和'&' 是非法的。省略號、引號和大于號是合法的,但是把它們替換為實體引用是個好的習慣。
符號 原符號 替換符號 小于 < < 小于等于 <= <= 大于 > > 大于等于 >= >= 不等于 <> <> 與 & & 單引號 ’ ' 雙引號 ' "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[<>]]> 13、Mybatis if 判斷等于一個字符串
當傳入的type的值為note 的時候,if判斷內(nèi)的sql也不會執(zhí)行。
<if test='type==’note’'> and status = 0 </if>
mybatis是使用的OGNL表達式來進行解析的,在OGNL的表達式中,’note’會被解析成字符,因為java是強類型的,char 和 一個String 會導致不等。所以if標簽中的sql不會被解析。
需要解決這個問題,只需要把代碼修改成:
<if test=’type=='note'’> //注意是雙引號,不是單引號!!!and status = 0 </if> 4、mysql二進制轉(zhuǎn)成字符串
SELECT cast(fieldName as CHAR) FROM tablename
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. MySQL刪除數(shù)據(jù),表文件大小依然沒變的原因2. 簡單了解mysql語句書寫和執(zhí)行順序3. 50種方法巧妙優(yōu)化你的SQL Server數(shù)據(jù)庫4. Access數(shù)據(jù)庫安全的幾個問題5. 在redhat 9 上安裝oracle 9.2.0.4 時,DBCA 出錯的解決辦法6. 數(shù)據(jù)庫Oracle9i的企業(yè)管理器簡介7. oracle觸發(fā)器介紹8. mysql數(shù)據(jù)庫中最常用的時間轉(zhuǎn)換函數(shù)的用法9. 整理Oracle數(shù)據(jù)庫碎片10. SQL Server補丁版本的檢查和安裝過程中常見問題
