Mybatis中 Integer 值為0時(jdbcType=INTEGER),默認為空字符串


背景

測試提出一個bug,說為什么選了查詢條件,結果還是把其他的數據查出來了。

分析

測試所選擇的查詢條件在數據庫中以int類型存儲,對應的實體類字段是Integer類型,在mapper文件中寫的查詢條件如圖:

<if test="item.checkedQty != null and item.checkedQty != ''">
    checked_qty = #{item.checkedQty,jdbcType=INTEGER},
</if>

該條件查詢也並不是所有情況都失效,只有選擇的條件是 checkedQty = 0的時候,才失效。

解決

查看其他博客內容,有人說當Integer類型的checkedQty = 0 時,mybatis會將其作為空串,所以我們寫的條件判斷中不能有 and item.checkedQty != '',否則就會校驗不通過,導致查詢條件失效。
經測試,確實可以解決。
備注:雖然好多博客都是是mybatis的問題,但是沒找到一篇文章將出現問題點的源碼貼出來,等我后續找到了,貼出來吧~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM