在项目中偶然发现一个判断数字的if没有起任何作用,代码如下
-
<if test="timeType !=null and timeType!='' and timeType == '3'">
-
AND
-
...
-
</if>
经过查询资料发现,mybatis是用OGNL表达式来解析的,在OGNL的表达式中,数字’3’会被解析成字符,java是强类型的,char 和 一个string 会导致不等,所以if标签中的sql不会被解析。
所以应该改为:
-
<if test="timeType !=null and timeType!='' and timeType == '3'.toString() ">
-
AND
-
...
-
</if>
然后发现确实解决了这个问题,特此记录。