在 Java 开发手册中有这一条:
咱们晓得根本类型和包装类型有很多不同点:
- 封装类型能够调用各种办法,而根本类型没有
- 封装类型申明字段之后能够不设置默认值,而根本类型须要初始化默认值。比方 int 默认值为 0,boolean 默认值为 false。
为什么要有这种规定
个别 dao 层会有固定的增删改查办法,别离是:
- selectByPrimaryKey
- updateByPrimaryKey
- insertSelective
- updateByPrimaryKeySelective
selectByPrimaryKey
在调用查询方法 selectByPrimaryKey
, 字段 Integer a 原本是 null,然而因为设置成了 int 类型,Java 会主动初始化默认值,结果显示默认值 0。查问后果和数据库不匹配。原本要插入 null,反而插入了 0,导致数据增加谬误。
updateByPrimaryKeySelective
在调用更新的办法,这里是调用 updateByPrimaryKeySelective
选择性更新字段,有值才更新,没有值就不更新,更新字段 b,然而因为字段 a 是 int 类型,在创建对象时,a 设置成了默认值 0,误将为 null 的 a 设置成了 0。insertSelective
办法也是同理。
参数传输
在 springmvc 接收数据,或者应用 RPC 办法传输数据,参数原本是没有赋值,然而 SpringMvc 或者 RPC 都会初始化默认值,然而传输的数据和须要传输的数据值不统一。
总结
所有的 POJO 必须设置封装类型,这是因为数据为 null 的状况下,根本类型会有默认值,无论是在增加、批改和查问的时候,都会导致数据和理论要批改的数据不统一。这一点还是须要多多留神。
参考
- Java 开发手册(嵩山版).pdf
如果感觉文章对你有帮忙的话,请点个赞吧!