聊聊Mybatis中sql語句不等于的表示
select * from user where id <> 217;
mybatis就會(huì)報(bào)語法錯(cuò)誤,<>特殊字符需要轉(zhuǎn)義
如下select * from user where id <> 217;
使用Mybatis的時(shí)候,特殊字符需進(jìn)行轉(zhuǎn)義,如
<> <>
& &
' ’
" '
Mybatis 特殊符號(hào)(大于,小于,不等于)及常用函數(shù)總結(jié)1、使用場(chǎng)景因?yàn)槲覀冊(cè)谌粘4aMybatis 動(dòng)態(tài)拼接語句時(shí)候經(jīng)常使用到 大于(>,>=)、小于(<,<=)、不等于(<> ,!=)符號(hào)。由于此符號(hào)包含了尖括號(hào),Mybatis使用的 *.xml文件格式。于是
需要之內(nèi)尖括號(hào)進(jìn)行相關(guān)的轉(zhuǎn)義或者使用 CDATA 區(qū)段。
2、實(shí)現(xiàn)方式2.1、轉(zhuǎn)義特殊符號(hào)方式
注釋:嚴(yán)格地講,在 XML 中僅有字符 '<'和'&' 是非法的。省略號(hào)、引號(hào)和大于號(hào)是合法的,但是把它們替換為實(shí)體引用是個(gè)好的習(xí)慣。
符號(hào) 原符號(hào) 替換符號(hào) 小于 < < 小于等于 <= <= 大于 > > 大于等于 >= >= 不等于 <> <> 與 & & 單引號(hào) ’ ' 雙引號(hào) ' "mapper文件寫法:
select * form tablenme t where t.code <> 1
2.2、使用 CDATA 區(qū)段
所有 XML 文檔中的文本均會(huì)被解析器解析。只有 CDATA 區(qū)段(CDATA section)中的文本會(huì)被解析器忽略。
大于等于 <![CDATA[ >= ]]>
小于等于 <![CDATA[ <= ]]>
不等于<![CDATA[ <> ]]>
mapper文件寫法:
select t.* form tablenme t where t.code <![CDATA[<>]]> 13、Mybatis if 判斷等于一個(gè)字符串
當(dāng)傳入的type的值為note 的時(shí)候,if判斷內(nèi)的sql也不會(huì)執(zhí)行。
<if test='type==’note’'> and status = 0 </if>
mybatis是使用的OGNL表達(dá)式來進(jìn)行解析的,在OGNL的表達(dá)式中,’note’會(huì)被解析成字符,因?yàn)閖ava是強(qiáng)類型的,char 和 一個(gè)String 會(huì)導(dǎo)致不等。所以if標(biāo)簽中的sql不會(huì)被解析。
需要解決這個(gè)問題,只需要把代碼修改成:
<if test=’type=='note'’> //注意是雙引號(hào),不是單引號(hào)!!!and status = 0 </if> 4、mysql二進(jìn)制轉(zhuǎn)成字符串
SELECT cast(fieldName as CHAR) FROM tablename
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 巧用SQL語言在ACCESS數(shù)據(jù)庫中批量替換內(nèi)容2. oracle觸發(fā)器介紹3. MySQL插入數(shù)據(jù)時(shí),如果記錄不存在則insert,如果存在則update4. MYSQL(電話號(hào)碼,身份證)數(shù)據(jù)脫敏的實(shí)現(xiàn)5. MySQL創(chuàng)始人發(fā)郵件尋求中國(guó)幫助6. Mysql入門系列:在MYSQL結(jié)果集上執(zhí)行計(jì)算7. Mysql入門系列:建立MYSQL客戶機(jī)程序的一般過程8. Mysql故障排除:Starting MySQL. ERROR! Manager of pid-file quit without updating file9. mysql數(shù)據(jù)表的基本操作之表結(jié)構(gòu)操作,字段操作實(shí)例分析10. Oracle10g支持SQL正則表達(dá)式

網(wǎng)公網(wǎng)安備