最近公司做项目时,遇到了一个传入值为0时,mybatis中if标签判断出错的问题,记录之。
<if test="ew.entity.type != null and ew.entity.type != ''">
AND type = #{ew.entity.type , jdbcType=DECIMAL}
</if>
以上原代码,当type =0时,这个条件就进入不了。
改成
<if test="ew.entity.type != null and ew.entity.type != '' or ew.entity.type == 0">
AND type = #{ew.entity.type , jdbcType=DECIMAL}
</if>
后成功运行。
实际是,Mybatis中if标签判断时,比较字符串和数字时,会把这个字符串转换成数字,然后再和这个数字判断.
然鹅,下面是源码
return s.length() == 0 ? 0.0D : Double.parseDouble(s);
当为空串时会被转成0.0D