背景
測試提出一個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的問題,但是沒找到一篇文章將出現問題點的源碼貼出來,等我后續找到了,貼出來吧~