Mybatis中if标签如下写if判断失效
失效1
//失效
//<choose/><when>标签同样 有其问题
<if test="flag == '1'">
...
</if>
<if test="flag == '2'">
...
</if>
原因:mybatis是用OGNL表达式来解析的,在OGNL的表达式中,'0’会被解析成字符,java是强类型的,char 和 一个string 会导致不等,所以if标签中的sql不会被解析。
解决办法如下
1.加.toString
<if test="flag == '1'.toString() ">
...
</if>
<if test="flag == '2'.toString() ">
...
</if>
2.单引号 换成双引号
<if test='flag == "1" '>
...
</if>
<if test='flag == "2" '>
...
</if>
3.java 传值为 数值类型 Integer int之类的
<if test="flag == 1 ">
...
</if>
<if test="flag == 2 ">
...
</if>
失效2
## 时间类型判断
<if test="beginTimeUsedQuery == null and endTimeUsedQuery == null">
AND a.created_time BETWEEN #{beginTimeUsedQuery} AND #{endTimeUsedQuery}
</if>
解决办法
<if test="beginTimeUsedQuery neq null and endTimeUsedQuery neq null">
AND op.created_time BETWEEN #{beginTimeUsedQuery} AND #{endTimeUsedQuery}
</if>