为什么在DTO中请要使用包装类型

news2024/11/27 2:21:49

Java是一种强类型的面向对象编程语言,它为我们提供了一种特殊的类别,叫做数据传输对象(Data Transfer Object,DTO)。在本篇文章中,我们将详细讨论为什么在DTO中使用包装类型而非基础类型。

1. 什么是DTO?

DTO,即Data Transfer Object(数据传输对象),是一种设计模式,用于在不同的系统组件之间传输数据。它通常只包含数据字段和对应的getter和setter方法。

2. 什么是基础类型和包装类型?

在Java中,基础类型包括byteshortintlongfloatdoublebooleanchar等。每种基础类型都有一个对应的包装类型,例如IntegerLongBooleanCharacter等。

基础类型和包装类型的主要区别在于,基础类型的变量存储的是实际的值,而包装类型的变量存储的是对象的引用。此外,基础类型的变量不能为null,而包装类型的变量可以为null。

3. 为什么在DTO中使用包装类型?

在DTO中使用包装类型而非基础类型有几个主要的原因:

3.1 包装类型可以表示null值

当我们在DTO中使用基础类型时,如果数据源中的相应字段是null,那么在DTO中这个字段将被初始化为默认值,例如int类型的默认值是0,boolean类型的默认值是false。这可能会导致数据的丢失或者误解。

而如果我们在DTO中使用包装类型,那么在数据源中的字段是null时,DTO中的字段也可以是null。这样我们就可以准确地表示数据的实际状态。

3.2 包装类型提供了更多的方法

包装类型提供了一些额外的方法,例如Integer类提供了parseInt()valueOf()等方法,Boolean类提供了parseBoolean()valueOf()等方法。这些方法在处理数据时可能会非常有用。

4. Java示例

下面是一个使用基础类型的DTO的例子:

public class UserDTO {
    private int id;
    private boolean active;

    // getters and setters
}

如果数据源中的id或者active字段是null,那么在DTO中这些字段将被初始化为0和false,这可能不是我们想要的结果。

下面是一个使用包装类型的DTO的例子:

public class UserDTO {
    private Integer id;
    private Boolean active;

    // getters and setters
}

如果数据源中的id或者active字段是null,那么在DTO中这些字段也可以是null,这样我们就可以准确地表示数据的实际状态。

下面是一个具体例子:

@Data
public class PicLOrderMainBean {
    private Integer sid;
    private String orderState;
    private String modifierId;
    private LocalDateTime modifyDate;
    private long prem;
}

对于以上代码,在执行更新操作时会把 prem更新成0! 把prem改成包装类,问题解决~

5. 总结

在DTO中使用包装类型而非基础类型是一个好的编程实践。包装类型可以表示null值,提供了更多的方法,可以帮助我们更准确地表示和处理数据。

虽然在一些情况下,使用基础类型可能会有更好的性能,但是在大多数情况下,这种性能的优势是可以忽略的。所以,我们应该优先考虑代码的清晰性和准确性,而不是微小的性能优势。

👉 💐🌸 公众号请关注 "果酱桑", 一起学习,一起进步! 🌸💐

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1170450.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电池原理与分类

1 电池基础知识 电池目前大量应用于我们的生活中,主要包括3C消费类、动力类、储能类。 图1 电池应用方向 备注:3C指的是计算机(Computer )、通讯(Communication)消费类电子产品(Consumer Electronic)三类…

GPT4做网页,完成度竟然这么高!!!

CHATGPT简介 chatgpt的自我介绍是这样的: 最近一段时间内,chatgpt可谓是数次引发热议,现在,让我们一起来看看,他所制作的网页究竟能到什么地步呢? 提示词 我给了CHATGPT如下的提示词,那么它…

【一周安全资讯1104】证监会发布《上市公司公告电子化规范》等9项金融行业标准;北京网信办对三家违反数据安全法规企业作出行政处罚

要闻速览 1、证监会发布《上市公司公告电子化规范》等9项金融行业标准 2、《网络安全标准实践指南—粤港澳大湾区跨境个人信息保护要求》公开征求意见 3、北京市网信办对三家企业未履行数据安全保护义务作出行政处罚 4、加拿大禁止政府雇员使用微信和卡巴斯基 5、次覆盖“人的…

CSS解决div行变块 ➕ CSS解决“table中的td文字溢出控制显示字数,显示省略号”的问题

CSS解决div行变块 ➕ CSS解决“table中的td文字溢出控制显示字数,显示省略号”的问题 1. div变块级设置1.1 先看不设置的效果1.2 再看设置之后的效果 2. 解决 table 中 td 内容过长问题2.1 CSS实现(文字溢出控制td显示字数,显示省略号&#x…

ssm在线互助答疑系统-计算机毕设 附源码 20862

ssm在线互助答疑系统 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中&#…

(免费领源码)java#ssm#mysql 宠物领养系统08465-计算机毕业设计项目选题推荐

目 录 摘要 1 绪论 1.1课题背景及意义 1.2研究现状 1.3ssm框架介绍 1.3论文结构与章节安排 2 宠物领养系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据流程 3.3.2 业务流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分析 …

LeetCode 421. 数组中两个数的最大异或值

原题链接:https://leetcode.cn/problems/maximum-xor-of-two-numbers-in-an-array/description/?envTypedaily-question&envId2023-11-04 题目分析 异或且时间复杂度在nlogn内第一反应想到字典树,扫一遍存进字典树,然后遍历每个数&…

CAM模型可视化(可解释)

模型的可解释性问题一直是个关注的热点。注意,本文所说的“解释”,与我们日常说的“解释”内涵不一样:例如我们给孩子一张猫的图片,让他解释为什么这是一只猫,孩子会说因为它有尖耳朵、胡须等。而我们让CNN模型解释为什…

yolov5简易使用

1.环境配置 从github上下载好yolov5源码后,根据requirement文件配置环境,使用conda新建一个仿真环境,接着使用 pip install -r requirements.txt 来安装环境,安装后首先运行detect.py 发现安装后的环境不能使用,报…

windows10系统-17-文献管理软件

参考诸多文献管理软件的优劣比较如何?你有哪些使用心得? 参考我愿称之为目前最好用的文献管理和阅读软件!readpaper 1 文献总结 文献总结是非常重要的一项技能,不知道大家看完文献后有没有总结文献的习惯,有的话那挺…

【中国知名企业高管团队】系列57:康佳KONKA

今天开始,华研荟为大家介绍中国电视行业的知名企业,接下来三天介绍位于深圳的电视三巨头,这三巨头以电视机研发、生产和销售起步,2000左右生产过非智能手机,但是在互联网时代被小米们抢走了电视和手机的很大一部分市场…

大数据之LibrA数据库系统告警处理(ALM-12016 CPU使用率超过阈值)

告警解释 系统每30秒周期性检测CPU使用率,并把实际CPU使用率和阈值相比较。CPU使用率默认提供一个阈值范围。当检测到CPU使用率连续多次(可配置,默认值为10)超出阈值范围时产生该告警。 平滑次数为1,CPU使用率小于或…

The world,The Matrix and Big Model

黑客帝国,打开了The Matrix与现实世界的关系。今天,现实版的“The Matrix”已经开始逐渐浮现。ChatGPT,打开了这个入口。"The Matrix" 变成了“Big Model”。话不多说,上图。人类借助“Big Model”离开“洞穴”。 人与T…

2023年【危险化学品经营单位安全管理人员】复审考试及危险化学品经营单位安全管理人员模拟考试题库

题库来源:安全生产模拟考试一点通公众号小程序 危险化学品经营单位安全管理人员复审考试考前必练!安全生产模拟考试一点通每个月更新危险化学品经营单位安全管理人员模拟考试题库题目及答案!多做几遍,其实通过危险化学品经营单位…

ASO优化之iOS应用关键词的优化技巧2

关键词优化始终必须包括由App Store算法索引的所有元数据元素,所以我们要在关键词字段方面与其他元数据相结合。另外,确保转化率优化策略,是适合我们的关键词策略的。 1、每个关键词只能使用一次。 Apple的算法无论我们使用的频率如何&#…

加密的手机号,如何模糊查询?

前几天,知识星球中有位小伙伴,问了我一个问题:加密的手机号如何模糊查询? 我们都知道,在做系统设计时,考虑到系统的安全性,需要对用户的一些个人隐私信息,比如:登录密码…

基于 NGram 分词,优化 Es 搜索逻辑,并深入理解了 matchPhraseQuery 与 termQuery

基于 NGram 分词,优化 Es 搜索逻辑,并深入理解了 matchPhraseQuery 与 termQuery 前言问题描述排查索引库分词(发现问题)如何去解决这个问题?IK 分词器NGram 分词器使用替换 NGram 分词器后进行测试matchPhraseQuery 查…

vivado布局分析

1、高亮显示布局 1. 在“ Netlist ” ( 网表 ) 窗口中 , 选择要分析的层级。 2. 从弹出菜单中 , 选择“ Highlight Leaf Cells ” → “ Select a color ” ( 高亮叶节点单元 > 选择颜色 ) 。 3. …

【C语法学习】9 - fputs()函数

文章目录 1 函数原型2 参数3 返回值4 输出机制5 比较6 示例6.1 示例16.2 示例2 1 函数原型 fputs():将str指向的内存空间中存储的字符串发送至指定流stream,函数原型如下: int fputs(const char *str, FILE *stream)2 参数 fputs()函数有两…

初谈Linux-Linux环境搭建(阿里云免费服务器+xshell)

文章目录 前言Linux环境搭建结尾 前言 Linux is not unix 本篇文章小编初谈Linux并搭建Linux环境(阿里云免费服务器shell) Linux Linux是一个开源的操作系统 环境搭建 1.点击阿里云ECS免费学生服务器 2.注册后完成学生认证 3.购买云服务器&#xf…