Mybatis条件判断if入参为0条件不生效的问题

概述

项目中有个Mybatis查询的条件判断如下:

<if test="operationStatus != null and operationStatus != ''">
    and t.operation_status = #{operationStatus}
</if>

然后当operationStatus=0时,if判断没有进去,导致查询条件不生效。

原因

<if test="operationStatus != null and operationStatus!= ''">中,因为有operationStatus!= ''的存在,故MybatisoperationStatus看作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>
  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值