DTO介绍

article/2025/9/22 11:43:33

 先看看这张图,dto所处位置,主要是用于业务逻辑层service和表示层servlet之间的数据传输

什么是DTO(Data Transfer Object)数据传输对象?

DTO是一个比较特殊的对象,他有两种存在形式:

在后端,他的存在形式是java对象,也就是在controller里面定义的那个东东,通常在后端不需要关心怎么从json转成java对象的,这个都是由一些成熟的框架帮你完成啦,比如spring框架

在前端,他的存在形式通常是js里面的对象(也可以简单理解成json),也就是通过ajax请求的那个数据体。

DTO主要用于服务层与控制层之间的数据传输

DTO只取它所需要的字段,也可以定义需要但是数据库中不存在的数据。

一般我们使用DTO类来继承entity实体类,在DTO类里放一些业务字段,并提供get、set方法。

使用DTO的优点

1.依据现有的类代码,即可方便的构造出DTO对象,而无需重新进行分析。

2.减少请求次数,大大提高效率。

3.按需组织DTO对象,页面需要的字段我才组织,不需要的我不组织,可以避免传输整个表的字段,一定程度上提高了安全性。

DTO转实体类

方法1:

一般来说,在我们实际的开发过程,不能直接使用DTO,要转成实体类才能进行使用。

导入依赖:

<dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-jdk8</artifactId> </dependency> <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-processor</artifactId> </dependency>

在mappers包下创建AdminBankDtoMappers接口

MapStruct之@Mapper注解的用法 - 知乎 (zhihu.com)

@Mapper(componentModel="spring") public interface AdminBankDtoMappers{ AdminBankDtoMappers INSTANCE = Mappers.getMapper(AdminBankDtoMappers.class); //dto转实体类 AdminBank toConverEntity(AdminBankDto source); //实体类转dto AdminBankDto toConverDto(AdminBank source); //泛型转泛型 List<AdminBank> toConverEntity(List<AdminBankDto> source); List<AdminBankDto> toConverDto(List<AdminBank> source); }

如果说mappers第一次编译后,进行第二次编译失败,就需要删除mappers,重新写一个mappers,编译后生成的实现类是在idea中看不到的

编译键:

方法2:

关于Spring中的BeanUtils工具类的说明

Spring--BeanUtils工具类--使用/实例 - 知乎 (zhihu.com)

这里对于商品类型表,货车类型表,商品类型与货车类型关联表进行一个举例,通过前面两张表,生成一个的商品类型的时候,同时也要生成一个商品类型与货车类型关联的字段,这个时候需要用到dto,在这里dto相较于商品类型实体类中多了个货车类型id,体现了dto的优势

  1. 创建实体类对象
  2. 将dto的成员对象赋值给实体类,就是将要新增的数据赋值给这个实体类,通过实体类去做操作
  3. 调用商品类型服务中的新增方法,为什么不用mp中的save方法,是因为mp中的save方法生成的id都是自动增长的那种。自己定义的新增方法中需要使用雪花算法对id进行随机分配,也可以实现save方法进行修改
  4. 得到商品类型id
  5. 当货车类型不为空时,调用货车类型与商品类型相关联服务的批量新增方法。从dto里拿到货车类型id,进行stream流处理,通过map把货车类型id与商品类型id关联起来,返回出去,转为list
  6. 最后把实体类的成员对象赋值给dto,加好货车id与商品id之间的关联后,又赋值回去,再去做下一步的操作
  7. 最后返回dto

自定义的货物类型新增方法

关于其它的vo,bo,po,do等可以看看知乎的这篇文章

一篇文章讲清楚VO,BO,PO,DO,DTO的区别 - 知乎 (zhihu.com)


http://chatgpt.dhexx.cn/article/1PpQgQjE.shtml

相关文章

阿里巴巴Java开发手册中的DO、DTO、BO、AO、VO、POJO定义

常用文件夹分层&#xff1a; pojo vo &#xff08;与前端交互的所有对象&#xff0c;包括接参和返回&#xff09;query &#xff08;查询的筛选条件&#xff0c;前端传参和后端内部传参通用&#xff09;entity &#xff08;数据库表基础对象&#xff09;dto&#xff08;后端内…

R下载与安装详细指南

一、登陆www.r-project.org进入R官网 二、点击左侧CRAN或右侧的download R 三、在China选项&#xff0c;随机点击一个镜像 四、R语言可以在Linux、MAC OS和Windows上运行&#xff0c;根据个人的操作系统选择需要下载的镜像 五、点击下载、运行、选择中文版本 六、安装过程 …

Rstudio下载太慢安装报错???

目录 00引言1、正文1.1踩过的坑1.1.1下载慢1.1.2安装报错 1.2经验方法1.3结果 00引言 因为Rmarkdown的原因&#xff0c;最近开始不想使用原生态的R编译器了。开始升级Rstudio了。但是从下载到安装的坑确实不少。 1、正文 1.1踩过的坑 1.1.1下载慢 这是下载了一晚上的结果&…

R语言下载气象数据

近来气象数据共享网的账户到期&#xff0c;失去日序列数据的下载权限。总结了以下R语言气象数据的下载包。尚未亲自尝试&#xff0c;具体各包的适用情况诸君请自行研究。 package一览 下列所有包的来源均属于 rOpenSci 项目. 1. GSODTools 2. GSOD 3. rnoaa 4. bomrang 5. r…

Linux+conda+R+Rstudio下载安装环境全方面配置

很多小伙伴不习惯在R中用到conda环境&#xff0c;其实这可能是因为你还没有使用到对环境有更高要求的包。 假如我们想安装R包A&#xff0c;它要求的R版本是4.3.0&#xff0c;但是你现在R版本是4.2.0&#xff0c;并且你其他的算法包都是根据4.2.0所创建的&#xff0c;那么就会造…

R语言使用教程(三)——Rstudio添加镜像源(加快包的下载)

文章目录 Windows系统R语言使用教程&#xff08;三&#xff09;——Rstudio添加镜像源(加快包的下载)打开rstudio --> Tools --> Global Options -->Packages --> add -->输入--> Change --> 选择离自己最近的源 --> Apply --> OK参考链接 Windows系…

【数据分析入门】R语言下载与R包新旧设备转移

一、R语言下载 https://cran.rstudio.com/ 二、Rstudio下载 https://www.rstudio.com/products/rstudio/download/#download Rstudio是R语言的集成开发环境 如果R语言是饭&#xff0c;Rstudio就是筷子 不用筷子也行&#xff0c;可以用手&#xff08;直接用R&#xff09; 但是…

R语言批量下载PubMed摘要

1&#xff0c;安装easyPubMed包&#xff1a; install.packages("easyPubMed")2&#xff0c;关键字搜索下载摘要信息 library(easyPubMed) query <- "GATK" #以关键字“GATK”为例 file_name <- "GATK" #保存结果的输出文件的文件名前缀…

R或RStudio下载包时出错解决方案

当我们想要在R&RStudio中下载包时可能会出现如下类似错误 在如下目录中的Rprofile.site文件中对应位置增加一条代码即可&#xff1a; options(download.file.method"libcurl") 修改好后&#xff0c;再次下载即可成功&#xff01;

R语言源代码下载

吐槽&#xff1a;老师说让我去找开源代码&#xff0c;不要用别人做好的软件。 经过调研&#xff0c;有两个可以用的开源软件&#xff0c;一个是bibliometrix&#xff0c;一个是SciMAT。 软件都没用过就算了&#xff0c;学一学就行&#xff0c;可是这些软件只支持英文文献&#…

R3.6.3下载 Rstudio下载及安装,网盘链接永久有效

链接&#xff1a;https://pan.baidu.com/s/1ab1JdmzKDAbDuUv76K3g1Q 提取码&#xff1a;pzkj 永久有效&#xff0c;收藏点赞拿走 记得软件安装路径一定不要有中文、空格&#xff0c;默认安装就没什么问题&#xff0c;其他问题可以联系文末微信号&#xff0c;24小时解答。 参考…

R和Rstudio 下载安装

R下载地址 1.选择自己电脑系统 2.点击base 3.选择合适版本下载 Rstudio下载地址 点击右上角 DOWNLOAD 点击 Free下 DOWNLOAD 选择合适的下载即可 机械安装即可&#xff08;默认安装C盘&#xff0c;可自行更改安装路径&#xff09; 在电脑开始页可看见&#xff0c;如图

R和RStudio下载安装详细步骤

相关文章&#xff1a; r语言基础知识 r语言习题和参考答案 r语言数据分析案例 还有很多相关文章都在我的专栏里面&#xff1a;R语言专栏 本文介绍R和RStudio的下载安装&#xff08;Windows系统&#xff09;&#xff0c;步骤十分详细&#xff08;按照我截图的顺序来即可&#x…

第一课 R语言下载和安装

一、什么是 R 语言 R 编程语言被广泛应用在统计科学和商业领域。在各种编程语言排名中 R 语言的排名 都很靠前。它是一款集成了数据操作、统计&#xff0c;以及可视化功能的优秀开源软件。免费&#xff0c;开源 是 R 重要的特点。 二、什么是 RStudio RStudio 是用亍 R 编…

R语言下载GEOquery包

一开始我用的是R语言常用的下载方式 install.packages(GEOquery) 结果报错了。 然后&#xff0c;我在网上查找资料&#xff0c;看到这个视频 如何在R上下载GEOquery包_哔哩哔哩_bilibili 首先&#xff0c;确认有BiocManager包&#xff0c;没有的话就下载 if(!requireNames…

RStudio 下载R包的几种方法

1. 使用RStudio自带的安装方法&#xff0c;右侧找到Packages&#xff0c;点击Install&#xff0c;然后输入package_name即可 2.使用CRAN&#xff0c;repos后面的镜像地址可以更改&#xff0c;一般使用的是这个清华的镜像。 #一般使用第一行命令进行安装&#xff0c;如果不成功…

R语言——RStudio下载R包时总是下载不成功?解决方案

RStudio下载R包出现Warning in install.packages的情况 原因是&#xff1a;由于RStudio的源是Global&#xff0c;所以在使用install命令去安装包的时候可能会出现数据部分丢失的情况。 解决方法&#xff1a;换源 在工具栏找到Tools->Global Options 在右边的栏目里找到Pack…

Linux简单了解入门学习一

1. 学习Linux之前先认识Unix l Unix是一个强大的多用户、多任务操作系统。 l 于1969年在AT&T的贝尔实验室开发。 l UNIX的商标权由国际开放标准组织(The Open Group)所拥有。 l UNIX操作系统是商业版,需要收费,价格比Microsoft Windows正版要贵一些。 2. Linux l…

(一) Linux入门概述

系列文章目录 &#xff08;一&#xff09; Linux入门概述 &#xff08;二&#xff09; Linux环境搭建 &#xff08;三&#xff09; Linux常用命令 &#xff08;四&#xff09; 软件安装与部署 文章目录 系列文章目录前言Linux概述 前言 Linux和Windows一样是一个操作系统软件&…

Linux一篇入门(以Ubuntu为例)

一、Linux与Windows区别 Linux&#xff1a;无盘符&#xff0c;只有一个根目录&#xff08;/&#xff09; Windows&#xff1a;有盘符 二、目录相关常见命令 Linux命令格式&#xff1a; cmd -option parameter cdm命令&#xff0c;就是一个操作 parameter一般是要做的对象…