Integer和int踩过的坑

Posted ly-520

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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“”去判断的,特在此做个笔记。

以上是关于Integer和int踩过的坑的主要内容,如果未能解决你的问题,请参考以下文章

记录NCNN Yolov5部署华为鸿蒙系统踩过的坑

那些年一起踩过的坑 — java 自动装箱拆箱问题

那些年我们一起踩过的坑

踩过的坑

python易错盲点排查之+=与+的区别分析以及一些赋值运算踩过的坑

Fragment全解析系列:那些年踩过的坑