關(guān)于mybatis遇到Integer類型的參數(shù)時動態(tài)sql需要注意條件
mybatis Integer類型參數(shù)動態(tài)sql注意條件
例如以下拼接的動態(tài)sql
<if test="work_status !=null ?and work_status !='' "> ?and T.status=#{work_status,jdbcType=INTEGER} </if>
當(dāng)work_status為0時,Mybatis會將0解析為了空字符串‘’,這樣if判斷就為false,如果想正確添加and后的查詢條件,應(yīng)該改成
<if test="work_status !=null ?"> ?and T.status=#{work_status,jdbcType=INTEGER} </if>
mybatis的坑——Integer類型參數(shù)解析問題
有時候我們使用實體類傳遞參數(shù)時
有些屬性會被設(shè)置為Integer類型,比如status、sort等,在這里,使用Integer類型參數(shù)作為條件時,要注意一點:例如
<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)行空字符串的判斷,因為什么呢?
因為mybatis在解析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>
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
navicatdesignquery.sql.bak系統(tǒng)找不到指定路徑錯誤的解決方法
今天小編就為大家分享一篇關(guān)于navicatdesignquery.sql.bak系統(tǒng)找不到指定路徑錯誤的解決方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12Java使用Queryable-pageable實現(xiàn)分頁效果
這篇文章主要為大家介紹了Java如何使用Queryable-pageable從而實現(xiàn)分頁效果,文中的示例代碼簡潔易懂,感興趣的小伙伴可以動手嘗試一下2022-06-06java編程兩種樹形菜單結(jié)構(gòu)的轉(zhuǎn)換代碼
這篇文章主要介紹了java編程兩種樹形菜單結(jié)構(gòu)的轉(zhuǎn)換代碼,首先介紹了兩種樹形菜單結(jié)構(gòu)的代碼,然后展示了轉(zhuǎn)換器實例代碼,最后分享了相關(guān)實例及結(jié)果演示,具有一定借鑒價值,需要的朋友可以了解下。2017-12-12