mybatis if 標簽 判斷單個字符的不生效
阿新 • • 發佈:2018-08-28
解決辦法 sql ognl表達式 and tin tps arr 不為 單個字符
需求:
<if test="carrier != null and carrier !=‘‘ and carrier !=‘0‘"> AND CARRIER = #{carrier}
</if>
要在carrier字段不為null,‘‘,和"0"的時候增加以上條件,但是以上當carrier等於"0"時,並不生效。
轉載地址:https://blog.csdn.net/hamov/article/details/78417021
原因:mybatis是用OGNL表達式來解析的,在OGNL的表達式中,‘0‘會被解析成字符,java是強類型的,char 和 一個string 會導致不等,
所以if標簽中的sql不會被解析。
解決辦法:
1----換成雙引號
<if test=‘carrier != null and carrier !="" and carrier !="0"‘> AND CARRIER = #{carrier}
</if>
2----加toSting()
<if test="carrier != null and carrier !=‘‘ and carrier !=‘0‘.toString()"> AND CARRIER = #{carrier} </if>
總結:單個的字符要寫到雙引號裏面或者使用.toString()才行!
mybatis if 標簽 判斷單個字符的不生效