阿里Java规范:【强制】所有的 POJO 类属性必须使用包装数据类型
在 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规范:【强制】所有的 POJO 类属性必须使用包装数据类型的更多相关文章
- pojo类对应的就是数据库中的表,pojo类属性类型一定要用包装类Integer等
pojo类对应的就是数据库中的表,pojo类属性类型一定要用包装类Integer等 pojo类对应的就是数据库中的表,pojo类属性类型一定要用包装类Integer等 pojo类对应的就是数据库中的表 ...
- IDEA阿里Java规范插件的安装
本文参考自阿飞博客:http://www.cnblogs.com/aflyun/p/7668306.html 官方使用教程:https://zhuanlan.zhihu.com/p/30191998? ...
- IDEA安装IDEA阿里Java规范插件
插件安装方式有两种: 1.通过在线方式安装,搜索后找到,点击Install安装即可: 2.去官网plugins下载对应插件离线包,地址:https://plugins.jetbrains.com/pl ...
- Java基础语法04面向对象上-类-属性-方法-可变参数-重载-递归-对象数组
类 面向对象是一种思想,一般指将事务的属性与方法抽出总结为模板(类/class),处理事务时通过类创建/new出对象由对象的功能/方法去完成所要计算处理的事情. 面向过程:POP:以过程,步骤为主,考 ...
- 【工具】获取pojo类属性,并写入表格
1.添加依赖 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <dependency> <g ...
- 阿里Java编程规范 学习笔记
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- 为什么阿里巴巴开发手册中强制要求 POJO 类使用包装类型?NPE问题防范
封面:学校内的秋天 背景:写这个的原因,也是我这两天凑巧看到的,虽然我一直有 alibaba Java 开发手册,也看过不少次,但是一直没有注意过这个问题 属于那种看过,但又没完全看过 一起来看看吧冲 ...
- 点评阿里JAVA手册之编程规约(OOP 规约 、集合处理 、并发处理 、其他)
下载原版阿里JAVA开发手册 [阿里巴巴Java开发手册v1.2.0] 本文主要是对照阿里开发手册,注释自己在工作中运用情况. 本文难度系数为三星(★★★) 本文为第二篇 第一篇 点评阿里JAVA手 ...
- 阿里Java开发手冊之编程规约
对于程序猿来说,编程规范能够养成良好的编程习惯,提高代码质量,减少沟通成本.就在2月9号,阿里出了一份Java开发手冊(正式版),分为编程规约.异常日志.MySQL规约,project规约.安全规约五 ...
随机推荐
- 【LeetCode】245. Shortest Word Distance III 解题报告 (C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字典+暴力检索 日期 题目地址:https://lee ...
- 【LeetCode】355. Design Twitter 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...
- 【LeetCode】306. Additive Number 解题报告(Python)
[LeetCode]306. Additive Number 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http: ...
- 【】二次通告--Apache log4j-2.15.0-rc1版本存在绕过风险,请广大用户尽快更新版本
[转载自360众测] Apache Log4j2是一个基于Java的日志记录工具.该工具重写了Log4j框架,并且引入了大量丰富的特性.我们可以控制日志信息输送的目的地为控制台.文件.GUI组件等,通 ...
- Oracle VirtualBox 配置宿主机与虚拟机互访
写作原因 之前经常使用 VMware Workstation Pro,由于是非正常付费使用的不打算再用了.替代品就是 Oracle VirtualBox,但是发现了一个问题: "我想用NAT ...
- 基于MCRA-OMLSA的语音降噪(二):实现
上篇文章(基于MCRA-OMLSA的语音降噪(一):原理)讲了基于MCRA-OMLSA降噪的原理,本篇讲怎么做软件实现.软件实现有多种方式.单纯看降噪效果可用python,因为python有丰富的库可 ...
- v75.01 鸿蒙内核源码分析(远程登录篇) | 内核如何接待远方的客人 | 百篇博客分析OpenHarmony源码
子曰:"不学礼,无以立 ; 不学诗,无以言 " <论语>:季氏篇 百篇博客分析.本篇为: (远程登录篇) | 内核如何接待远方的客人 设备驱动相关篇为: v67.03 ...
- git下载
git快速下载地址:https://github.com/waylau/git-for-win
- JZOJ5966. [NOIP2018TGD2T3] 保卫王国 (动态DP做法)
题目大意 这还不是人尽皆知? 有一棵树, 每个节点放军队的代价是\(a_i\), 一条边连接的两个点至少有一个要放军队, 还有\(q\)次询问, 每次规定其中的两个一定需要/不可放置军队, 问这样修改 ...
- Lombok 安装配置及使用方法
pom.xml 引入依赖 <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> <!--Feb 0 ...