使用Mybatis遇到的坑之Integer類型參數(shù)的解讀
使用Mybatis遇到的坑之Integer類型參數(shù)
有時候我們使用實(shí)體類傳遞參數(shù)時,有些屬性會被設(shè)置為Integer類型,比如status、sort等,在這里,使用Integer類型參數(shù)作為條件時
要注意一點(diǎn):例如
<if test="bean.activitySort != null and bean.activitySort !=""">
? ? ? ? AND activity_sort = #{bean.activitySort,jdbcType=VARCHAR}
</if>這里對于bean.activitySort的判斷正常情況下如果activitySort是String類型,先判空,再判斷是否是空字符串,這樣是正常的,但是如果activitySort是Integer類型參數(shù),那么使用時就需要注意,此處不能對activitySort進(jìn)行空字符串的判斷,因?yàn)槭裁茨兀?/p>
因?yàn)閙ybatis在解析Integer類型數(shù)據(jù)時,如果數(shù)據(jù)值為0,會將0解析為空字符串,這樣你傳入的參數(shù)就成為無效的了,所以正常使用Integer類型參數(shù)應(yīng)該是下面這樣:
<if test="bean.activitySort != null">
? ? ? ? AND activity_sort = #{bean.activitySort,jdbcType=VARCHAR}
</if>Mybatis的xml,Integer類型參數(shù)bug問題
當(dāng)有Integer數(shù)據(jù)類型的參數(shù)值為0時,如pid=0,xml中pid==“” 判斷為ture,即不走條件語句
<if test="pid != null and pid != '' ">
AND a.pid = #{pid}
</if>
正確寫法一:還要加上一句 or pid==0
<if test="pid != null and pid != '' or pid ==0">
AND a.pid = #{pid}
</if>
正確方法二:去掉and pid != ''的條件
<if test="pid != null ">
AND a.pid = #{pid}
</if>
原因分析

總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot自定義監(jiān)聽器的項(xiàng)目實(shí)踐
Spring Boot提供了強(qiáng)大的事件模型,其中包括多種內(nèi)置監(jiān)聽器,同時也支持開發(fā)者自定義監(jiān)聽器,下面就來介紹下SpringBoot自定義監(jiān)聽器,感興趣的可以了解一下2024-03-03
mybatis mapper互相引用resultMap啟動出錯的解決
這篇文章主要介紹了mybatis mapper互相引用resultMap啟動出錯的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08
Java輕松使用工具類實(shí)現(xiàn)獲取MP3音頻時長
在Java中,工具類定義了一組公共方法,這篇文章將介紹Java中使用工具類來獲取一個MP3音頻文件的時間長度,感興趣的同學(xué)繼續(xù)往下閱讀吧2021-10-10
SpringBoot的配置文件(properties與yml)使用方法
配置文件中的配置類型有兩類,一類是系統(tǒng)配置項(xiàng),這種配置的格式都是固定的,是給系統(tǒng)使用的,另一種是用戶自定義配置,用戶可以隨意地規(guī)定配置項(xiàng)的格式,又用戶自行去設(shè)置和讀取,這篇文章主要介紹了SpringBoot的配置文件(properties與yml)使用方法,需要的朋友可以參考下2023-08-08
基于springboot和redis實(shí)現(xiàn)單點(diǎn)登錄
這篇文章主要為大家詳細(xì)介紹了基于springboot和redis實(shí)現(xiàn)單點(diǎn)登錄,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06
SpringBoot + validation 接口參數(shù)校驗(yàn)的思路詳解
這篇文章主要介紹了SpringBoot + validation 接口參數(shù)校驗(yàn),本文通過項(xiàng)目實(shí)踐+場景分析給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10

