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

前段時間遇到一個bug,就是修改某一個integer類型的值的時候,除了修改爲0 其他的值都可以進行修改。只要想把這個字段改成0 就似乎沒有走update這個字段的語句。(前段時間比較忙也就沒有記下這個筆記)

相信很多朋友在使用Mybatis的時候都會去使用通用一點的insert或者update語句,類似加入以下這種判斷來進行復用。

<if test="orgName != null and orgName != ''">
    orgName =#{orgName ,jdbcType=VARCHAR},
</if>

也就是隻有orgName有有效值的時候纔會進入set語句,但是在對於Integer類型下的判斷就會有一定的影響。

經過我的測試發現mybatis會將Integer值的0等於空字符串''

例如傳入的num的值爲0,if標籤裏面一樣寫

num != null and num != ''

當num的值爲0 ,mybatis會當做0等於空串,也就不會進入此if裏面的代碼塊。

比如update語句,如果傳進來的值爲0那麼這個字段就不會被update掉

也就是說在對Integer類型的值進行判斷的時候,只需要加入!= null 即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章