關於在Mybatis使用Integer與''進行比較的坑
阿新 • • 發佈:2021-07-30
前段時間遇到一個bug,就是修改某一個integer型別的值的時候,除了修改為0 其他的值都可以進行修改。只要想把這個欄位改成0 就似乎沒有走update這個欄位的語句。(前段時間比較忙也就沒有記下這個筆記)
相信很多朋友在使用Mybatis的時候都會去使用通用一點的insert或者update語句,類似加入以下這種判斷來進行復用。
<if test="age!= null and age!= ''"> age=#{age,jdbcType=INTEGER},
</if>
也就是隻有“age”有有效值的時候才會進入set語句,但是在對於Integer型別下的判斷就會有一定的影響。
經過我的測試發現mybatis會將Integer值的0等於空字串''
例如傳入的num的值為0,if標籤裡面一樣寫
num != null and num != ''
當num的值為0 ,mybatis會當做0等於空串,也就不會進入此if裡面的程式碼塊。
比如update語句,如果傳進來的值為0那麼這個欄位就不會被update掉。
也就是說在對Integer型別的值進行判斷的時候,只需要加入!= null 即可。
願你眼中有光芒,活成你想要的模樣