1. 程式人生 > 實用技巧 >使用mybatis 過程中遇到的<if test='glssmc!=null and glssmc==1 '>報錯的坑

使用mybatis 過程中遇到的<if test='glssmc!=null and glssmc==1 '>報錯的坑

部落格參照:https://www.cnblogs.com/grasp/p/11268049.html

編寫mybatis檔案時,遇到 使用<if test=''>去判斷的sql

<if test="glssmc==null or glssmc==' ' ">

union all 

</if>

我一般只有這樣寫的


當後面加入常量判斷的時候就會報錯 如:

<if test="glssmc==null or glssmc==' ' or glssmc == '1' ">

union all

</if>

而後想起之前見過 要在'1'的後面加上toString(),嘗試以後成功,但不知為何,
在此引用部落格中的例子

把<if test="glssmc!= null or glssmc== '' or glssmc== '1'">

改為<if test="glssmc!= null orglssmc== '' orglssmc== "1" ">

或改為<if test="glssmc!= null orglssmc== '' orglssmc== '1'.toString() ">即可。

原因是:mybatis是用OGNL表示式來解析的,在OGNL的表示式中,’1’會被解析成字元,java是強型別的,char 和 一個string 會導致不等,所以if標籤中的sql不會被解析。

總結下使用方法:單個的字元要寫到雙引號裡面或者使用.toString()才行!

其他的坑還沒遇到,有需要參照引用部落格即可=-=