一个int类型引发的bug

一、引言

今天我在项目开发中,遭遇了一个莫名其妙的问题,概括加抽象后形成如下问题:在使用MyBatis的XML语句实现Dao层接口 List<Person> selectBySome(@Param("record") PersonExample example)时候,我写的XML中有这么一句代码:

<if test="record.id!=null">
    b.id=record.id
</if>

结果我及时不对example的id赋值,查询条件还是会有 b.id=0 ,为啥?

 

二、分析

很显然,条件中带有了 b.id=0 那么是因为 record.id!=null 成立了,此时我反过去看PersonExample,你猜我看到了什么?

public PersonExample{
  private int id;
//... }

看清楚,id居然是int, int作为基本数据类型肯定不为空啊,应该改为int的包裹类型Integer这才可以为空。

so int=> Integer bug消失。

 

三、总结

这个BUG印证了我之前看到的一篇文章中的一个关联:Struts2或者SpringMVC接口前台参数的时候应该尽可能使用包裹类型,目的就是为了处理为null的情况。

此处是否亦然?

那么项目中是否尽可能的使用包裹类型而不是基本类型了?

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值