Integer和int踩过的坑

2019-08-16 11:05:41来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

Integer和int踩过的坑

在做SSM项目时发现一个有趣的bug,在这里记录一下。

数据库表如下:

实体类:grade字段初始设定为int类型

在用mybatis对第三条数据进行修改时,希望赋值的更改,未赋值的不更改,测试运行

 

修改后发现数据库中的grade字段变成了0,这不是我想要的,(按照正常需求应该是原来的数字5)

 

查看了一下日志,发现了猫腻:

 int 类型,在默认情况下不赋值为0,执行到mybatis的更新语句时,被当做数字0,而非null,

仔细想想Integer和int 的区别,integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况,

我又把之前实体类中的grade 类型改为了Integer成功实现了自己想要的。

总结:在实体类中尽量使用Integer修饰,Integer可以区分出未赋值和值为0的区别,我们大部分做判断都是以“”null“”去判断的,特在此做个笔记。


原文链接:https://www.cnblogs.com/ly-520/p/11241080.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Spring Boot + RabbitMQ 配置参数解释

下一篇:腾讯,华为,阿里…7家Java后端面试经验大公开!