1. 程式人生 > 其它 >關於在Mybatis使用Integer與''進行比較的坑

關於在Mybatis使用Integer與''進行比較的坑

前段時間遇到一個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 即可。

願你眼中有光芒,活成你想要的模樣