今天發現了一個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類型,都不能使用!=''