在传输对象中,属性使用包装类型还是基础类型?

简介:

在你不知道的情况下,前端传给后端的数据会有一些变化。

如果在 idea 中使用了“阿里编码规约”的插件,那么插件中会有如下提示信息。

关于基本数据类型与包装数据类型的使用标准如下:

1) 所有的POJO类属性必须使用包装数据类型。

2) RPC方法的返回值和参数必须使用包装数据类型。

3) 所有的局部变量推荐使用基本数据类型。

说明:POJO类属性没有初值是提醒使用者在需要使用时,必须自己显式地进行赋值,任何NPE问题,或者入库检查,都由使用者来保证。

以下是实际使用中会出现的情况

开发环境:

  1. Postman
  2. IDEA

以下用 POJO 中属性 id 举例

  1. 当 ID 为 int 时,如下:
/**
 * 用户实体
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class UserDTO extends Page {
    /**
     * 用户ID
     */
    private int id;
    ......
}
  1. 当 ID 为 Integer 时
/**
 * 用户实体
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class UserDTO extends Page {
    /**
     * 用户ID
     */
    private Integer id;
    ......
}

3.postman 传输数据的方式为以下几种

1)不传id的情况:

{
    "size": 2,
    "current": 1
}

2)id 为 null 的情况:

{
    "size": 2,
    "current": 1,
    "id": null
}

3)id 为空字符串的情况:

{
    "size": 2,
    "current": 1,
    "id": ""
}

4)id 为 0 的情况:

{
    "size": 2,
    "current": 1,
    "id": 0
}

以下是前端将 id 的值传至后端时,后端获取 id 值对照表

传输值 int Integer
不传 0 null
null 0 null
"" 0 null
0 0 0

其他基础类型和包装类基本类似,比如 double 与 Double 的对照表如下:

传输值 double Double
不传 0.0 null
null 0.0 null
"" 0.0 null
0 0.0 0.0

从实际使用情况可以看出,当前端不传值时,或者传 null时,或者传空字符串("")时,基础类型都会有值,这可能在后续开发的业务逻辑中会有干扰,同时也容易有异常出现。特别是在需要计算数值的时候,更容易出现业务逻辑的问题。

所以,如规范中所说,POJO类属性最好使用包装数据类型,可以减少开发过程中异常情况的出现,也可以防止 BUG 的出现。

相关文章
|
SQL XML Java
Mybatis的三种映射关系以及联表查询
Mybatis的三种映射关系以及联表查询
406 0
|
2月前
|
编解码 人工智能 自然语言处理
【新版】阿里云 HappyHorse 功能介绍及配置价格表
阿里云HappyHorse凭借领先的技术架构、全面的功能体系、灵活的价格方案与高效的创作能力,成为AI视频生成领域的标杆产品。无论是个人创作者、自媒体团队,还是企业营销、电商运营、短剧制作等专业场景,均可通过HappyHorse快速、高效、低成本地实现视频内容创作与生产。随着模型持续迭代升级,HappyHorse将进一步拓展能力边界,为用户带来更优质的AI视频创作体验,助力内容产业智能化升级。
439 0
|
Java Maven
maven报错:[ERROR] 不再支持源选项 7。请使用 8 或更高版本。
maven报错:[ERROR] 不再支持源选项 7。请使用 8 或更高版本。
1130 0
|
Java 数据库连接 mybatis
mybatis报错:The alias 'xxx' is already mapped to the value '*.*.xxx'
The alias 'xxx' is already mapped to the value '*.*.xxx'
18783 0
|
JSON JavaScript 数据可视化
SpringBoot+Thymeleaf+ECharts实现大数据可视化(基础篇)
SpringBoot+Thymeleaf+ECharts实现大数据可视化(基础篇)
1824 0
SpringBoot+Thymeleaf+ECharts实现大数据可视化(基础篇)
|
8月前
|
域名解析 弹性计算 安全
阿里云服务器新手实操手册:购买、配置、搭建流程指南
对于第一次接触阿里云服务器的新手来说,最困惑的往往是“怎么买更划算”“配置怎么选才适配需求”“网站搭建从哪下手”。其实整个流程核心围绕“选对优惠、配准参数、按步搭建”三个关键环节,只要理清每个步骤的逻辑和细节,就能顺利完成从购买到上线的全操作。本文结合阿里云最新规则和实操经验,用通俗的语言拆解完整流程,全程无营销表述,包含核心表格对比,帮新手避开常见误区。
1914 10
|
存储 Java Spring
Spring之国际化:i18n
【1月更文挑战第17天】 一、i18n概述 二、Java国际化 三、Spring6国际化 1、MessageSource接口 2、使用Spring6国际化
590 1
|
前端开发 Java 应用服务中间件
IDEA中如何将一个JavaWeb项目打包成war包
1.Java的打包方式jar、war、ear包的作用、区别: jar:通常是开发时要引用通用(JAVA)类,打成包便于存放管理; war:是做好一个(web)应用后,通常是网站,打成包部署到容器中; ear: 企业级应用,实际上EAR包中包含WAR包和几个企业级项目的配置文件而已,一般服务器选择WebSphere等,都会使用EAR包。通常是EJB打成ear包。
1726 0
IDEA中如何将一个JavaWeb项目打包成war包
|
数据可视化 机器人 API
Openai的API相关全部概论汇总(通用版)
本文是2024年Openai API的全面概论汇总,涵盖了Openai平台概览、相关项目推荐(如ChatGPT-Next-Web和chatgpt-on-wechat)、账户分级制度与速率限制、费用详情以及如何快速开始使用Openai的API,为有兴趣使用Openai服务的开发者提供了详细的入门指南和资源链接。
Openai的API相关全部概论汇总(通用版)