在做開發的時候遇到這樣一個問題:當傳入的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”解析出來是一個字符串,兩者相等!