Mybatis判断Integer失效

当Mybatis在更新记录时,如果传入Integer类型的字段值为0,可能会遇到不更新的情况。问题源于Mybatis在判断int类型时,会将0视为空字符串。在mapper文件中的条件判断语句`<if test=companyContact.defaultFlag!=null and companyContact.defaultFlag!='' >`导致当`defaultFlag`为0时不执行更新操作。解决办法是去掉`companyContact.defaultFlag!=''`的判断,修改为`<if test=companyContact.defaultFlag!=null>`。此外,对于匹配int值,可以使用`<iftest='number==0.toString' >`和`<iftest='number==1.toString' >`来分别处理0和1的逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题

Mybatis传入Integer,值为0时,不更新

错误代码

实体类如下:

public class CompanyContact{
    private Integer enabledFlag;
    //其他属性忽略
}

mapper文件如下:

<if test="companyContact.defaultFlag!=null and companyContact.defaultFlag!=''">
    and default_Flag =#{companyContact.defaultFlag}
</if>

原因

Mybatis在判断 int 类型时,0认为是空字符串,由于加了companyContact.defaultFlag!=’’,因此判断为false,不走 if 逻辑

解决

去掉 !=’’ 判断

<if test="companyContact.defaultFlag!=null">
    and default_Flag =#{companyContact.defaultFlag}
</if>

其他(匹配 int 值)

<if test='number=="0".toString'>
	<!--相关逻辑-->
</if>
<if test='number=="1".toString'>
	<!--相关逻辑-->
</if>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值