MySQL字段是Integer,传参为0的时候Mybatis if标签失效

最近在写查询sql的时候遇到一个问题,有一个查询条件是一个状态,字段类型是Integer,查询的时候用这个条件会失效。例如传参是0,数据库值为1,还是查询出来。

<if test="signInStatus != null and signInStatus != ''"> 
    AND activity_record.sign_in_status=#{signInStatus}
</if>

搜索一下,发现是传入的值为0时,在mybatis会将其转化为空字符串,从而无法进入if标签中进行查询。

解决方法

1.只要把signInStatus != ''去掉就好,因为Integer只要判断!=null, 而!= ''是用来判断字符串

<if test="signInStatus != null"> 
    AND activity_record.sign_in_status=#{signInStatus}
</if>

2.感觉还是第一种好,更简单

<if test="signInStatus != null and signInStatus != '' or signInStatus == 0"> 
    AND activity_record.sign_in_status=#{signInStatus}
</if>

为何Mybatis将Integer为0的属性解析成空串:https://zhuanlan.zhihu.com/p/87509607

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值