1. 程式人生 > >mybatis if 標籤 判斷單個字元的不生效,其實這是個坑

mybatis if 標籤 判斷單個字元的不生效,其實這是個坑

需求:
<if test="carrier != null and carrier !='' and carrier !='0'">
    AND CARRIER = #{carrier}

</if>

要在carrier欄位不為null,'',和"0"的時候增加以上條件,但是以上當carrier等於"0"時,並不生效。

原因: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()才行!