Integer和int踩过的坑

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

数据库表以下:mybatis

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

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

 

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

 

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

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

仔细想一想Integer和int 的区别,integer的默认值为null,即Integer能够区分出未赋值和值为0的区别,int则没法表达出未赋值的状况,im

我又把以前实体类中的grade 类型改成了Integer成功实现了本身想要的。总结

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

相关文章
相关标签/搜索