Mybatis的sql配置文件对于参数0的判断处理

在Mybatis的数据库接口层传入参数s=0,在配置文件中用<if test="s != null and s != '' ">语句判断。发现并不能进入,后来跟踪源码发现,在Mybatis的org.apache.ibatis.ognl.OgnlOps.compareWithConversion(Object v1, Object v2)方法中,对比s和空字符串,会把他们转成double处理,这样都变成0.0了。

Mybatis的sql配置文件对于参数0的判断处理

所以,如果我们确定这个参数是int型的,我们就可以把等于空字符串这个判断去掉,因为空字符串这种情况不会出现。

坑爹的是如果这个参数是前端json传过来的,由于json是不会传null的,当这个属性是null的时候,它会默认给一个空字符串。如果我们直接把它转成Map,这样到数据库层,就会出现空字符串的情况。所以开发的时候应该注意提前处理掉。