Mybatis if 判斷等於一個字符串
用這兩種方法就可以了
再使用if標簽的時候常常會用到
<if test=" name!=null && name =='1' "><if/>
這樣子寫會出現 后面的 name =='1' 失效問題。 這個很多人會踩的坑。
網上有解決辦法就是
<if test=‘ name!=null && name =="1" '><if/> 把這個轉換成 單引號。這樣就解決了。
不過我覺得這樣解決太麻煩可以這樣解決
<if test=" name!=null && name =='1'.toString() "><if/>
這樣就可以完美解決了。。
在做開發的時候遇到這樣一個問題:當傳入的type的值為y的時候,if判斷內的sql也不會執行。
-
<if test="type=='y'">
-
and status = 0
-
</if>
仔細想想:mybatis是使用的OGNL表達式來進行解析的,在OGNL的表達式中,'y'會被解析成字符,因為java是強類型的,char 和 一個String 會導致不等。所以if標簽中的sql不會被解析。
所以,需要解決這個問題,只需要把代碼修改成:
-
<if test='type=="y"'> //注意是雙引號,不是單引號!!!
-
and status = 0
-
</if>
就可以執行了,這樣"y"解析出來是一個字符串,兩者相等!