<if test="status!= null and status!= ''"> status=#{status}, </if>
在mybatis中這樣寫的話,如果是String類型的話是沒有任何問題的,但是如果是傳入的Integer的話就會出現傳入0被判斷為空的現象,但是也不是必現的,為什么不是必現的也不太清,但是如果變量的值是0,即 status= 0, mybatis在進行 status!= ‘’ 的時候會認為 status的值是空字符串, 即 status== ‘’ 為true。所以如果是Integer類型只需要判斷 != null 即可。
如:
<if test="status!= null> status=#{status}, </if>
注意,以上調整可能會引起另外一個細節問題----------------
1、上面的調整去掉了status!= ''的判斷,如果前端沒有status的查詢條件但傳入了status= ''的參數,在mybatis會把status=0進行查詢。
<if test="status!= null and status!= ''"> status=#{status}, </if>