概述
项目中有个Mybatis查询的条件判断如下:
<if test="operationStatus != null and operationStatus != ''">
and t.operation_status = #{operationStatus}
</if>
然后当operationStatus=0
时,if判断没有进去,导致查询条件不生效。
原因
在<if test="operationStatus != null and operationStatus!= ''">
中,因为有operationStatus!= ''
的存在,故Mybatis
把operationStatus
看作String
来进行判断,然后Mybatis
此时会把0
作为null
来进行判断的,所以if判断条件不生效。
解决方案
找到原因了解决就很简单,竟然Mybatis把我的条件参数当做String来判断导致异常,那我们只要让Mybatis把我的入参当做Integer来判断就好了。于是把<if test="operationStatus != null and operationStatus != ''">
改为<if test="operationStatus != null">
就行了。
最终效果如下:
<if test="operationStatus != null">
and t.operation_status = #{operationStatus}
</if>