MyBatis不識別Integer值爲0的數據

今天發現了一個bug,java類型爲Integer的類型,前端傳入的數值爲0,後端也接收到了值,但是查看查詢語句並沒有出現這個條件。

查看mybatis裏的寫法

<if test="isFlag!=null and isFlag!=''">and isFlag=#{isFlag}</if>

查詢資料發現:

Mybatis Integer類型,值爲0被認爲是空字符串,所以如果你的值爲0,則此時判斷空字符串,mybatis將i==0的值也認定爲空字符串。

所以只需要將判空字符串條件去掉即可,

<if test="isFlag!=null">and isFlag=#{isFlag}</if>

或者判斷不等於-1,很多時候默認值爲-1

<if test="isFlag!=null and isFlag!=-1">and isFlag=#{isFlag}</if>

所以判空的操作不能隨意使用,這種判空情況很多,boolean、date類型,都不能使用!=''

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