MYBATIS中 if-test 数字判断坑

138 阅读1分钟

在项目中偶然发现一个判断数字的if没有起任何作用,代码如下

  1. <if test="timeType !=null and timeType!='' and timeType == '3'">
  2. AND
  3. ...
  4. </if>

经过查询资料发现,mybatis是用OGNL表达式来解析的,在OGNL的表达式中,数字’3’会被解析成字符,java是强类型的,char 和 一个string 会导致不等,所以if标签中的sql不会被解析。

所以应该改为:

  1. <if test="timeType !=null and timeType!='' and timeType == '3'.toString() ">
  2. AND
  3. ...
  4. </if>

然后发现确实解决了这个问题,特此记录。