Mybatis if 判斷等於一個字符串


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也不會執行。

  1.  
    <if test="type=='y'">
  2.  
    and status = 0
  3.  
    </if>

仔細想想:mybatis是使用的OGNL表達式來進行解析的,在OGNL的表達式中,'y'會被解析成字符,因為java是強類型的,char 和 一個String 會導致不等。所以if標簽中的sql不會被解析。

所以,需要解決這個問題,只需要把代碼修改成:

  1.  
         <if test='type=="y"'> //注意是雙引號,不是單引號!!!
  2.  
    and status = 0
  3.  
    </if>

就可以執行了,這樣"y"解析出來是一個字符串,兩者相等!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM