mybatis if test 不為空字符串且不為null的問(wèn)題
if test不為空字符串且不為null
在mybatis中if test
判斷不為空字串和null的時(shí)候,報(bào)了sql 語(yǔ)法錯(cuò)誤
xml文件:
WHERE enable =1
<if test="keyword != null AND keyword != ''">
AND ( mac_id = #{keyword} )
OR ( user_id = #{keyword} )
</if>
postman工具報(bào)錯(cuò)如下:

原因:
if 判斷中, 出現(xiàn)字母大小寫錯(cuò)誤, 不符合mybatis 語(yǔ)法規(guī)范

在mybatis中, if test 語(yǔ)法
1 判斷不為null
WHERE 1=1
<if test="keyword != null ">
? ? ? ? AND ?user_id = #{keyword}?
</if>2 判斷不為空字符串
WHERE 1=1
<if test="keyword != '' ">
? ? ? ? AND ?user_id = #{keyword}?
</if>3 判斷不為null 且 不為空字符串
WHERE 1=1
<if test="keyword != null and keyword != ''">
? ? ? ? AND ?user_id = #{keyword}?
</if>Controller層 —> 對(duì)應(yīng)xml 文件
我們?cè)讷@取列表時(shí),通常會(huì)根據(jù)關(guān)鍵詞進(jìn)行精確或模糊查詢,就會(huì)對(duì)關(guān)鍵詞進(jìn)行非空或者非null的判斷。如下:
| Controller層請(qǐng)求參數(shù)keyword | 請(qǐng)求參數(shù)默認(rèn)值 | Dao層X(jué)ml 文件 |
|---|---|---|
| @RequestParam(value = “keyword”, required = false) String keyword | null | if test="keyword != null " |
| @RequestParam(value = “keyword”, required = false, defaultValue = “”) String keyword | 空字符串 | if test="keyword != ‘’ " |
| / | 不清楚默認(rèn)值 | 都可以if test=“keyword != null and keyword != ‘’” |
| 參數(shù) | 默認(rèn)值 | Dao層X(jué)ml 文件 |
|---|---|---|
| 從其他渠道的獲取的數(shù)據(jù)或關(guān)鍵詞 | 不清楚默認(rèn)值 | if test=“keyword != null and keyword != ‘’” |
mybatis把0當(dāng)做空字符串
在開(kāi)發(fā)中,一般在sqlmap中都會(huì)判斷參數(shù)是否為null,以及是否為空字符串
當(dāng)參數(shù)為Int類型 0時(shí),myBatis自動(dòng)把0定義為空字符串“”
我們?cè)诳赡苋雲(yún)?的地方多加一個(gè)判斷
?<if test="authorizeAmount != null and ''!= authorizeAmount or authorizeAmount==0">
? ? ? ? ? ? ,a.AUTHORIZE_AMOUNT = #{authorizeAmount,jdbcType=VARCHAR}
? ? ? ? </if>這是一個(gè)比較容易粗心的地方,出問(wèn)題也不容易排查,記錄下來(lái)提醒自己!
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用java代碼實(shí)現(xiàn)保留小數(shù)點(diǎn)的位數(shù)
因?yàn)閭€(gè)人應(yīng)用的需要,所以就寫個(gè)簡(jiǎn)單點(diǎn)的了。希望大家都給給建議,共同學(xué)習(xí)。需要的朋友也可以參考下2013-07-07
mybatis generator只能生成insert和selectAll的操作
這篇文章主要介紹了mybatis generator只能生成insert和selectAll的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09
怎么把本地jar包放入本地maven倉(cāng)庫(kù)和遠(yuǎn)程私服倉(cāng)庫(kù)
這篇文章主要介紹了怎么把本地jar包放入本地maven倉(cāng)庫(kù)和遠(yuǎn)程私服倉(cāng)庫(kù)的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06
mybatis Map查詢結(jié)果下劃線轉(zhuǎn)駝峰的實(shí)例
這篇文章主要介紹了mybatis Map查詢結(jié)果下劃線轉(zhuǎn)駝峰的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09
Java對(duì)中文進(jìn)行排序的實(shí)現(xiàn)示例
工作中,我們經(jīng)常會(huì)遇到需要進(jìn)行各種排序的需求,本文主要介紹了Java對(duì)中文進(jìn)行排序的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02

