举个例子讲解DTO负责干啥

news/2025/2/8 3:25:25/文章来源:https://www.cnblogs.com/ivanlee717/p/18583572

dto

在Spring Boot的开发过程中,使用DTO(Data Transfer Object)层是一个很常见的做法。DTO层是在应用程序的业务逻辑层和数据访问层之间引入的一个中间层,用于在不同层之间传输数据。本文将介绍DTO层的基本语法和为什么在Spring Boot开发中需要使用DTO层,并提供实际案例代码。
image-20241129111423665

DTO(Data Transfer Object)主要是在应用程序的不同层之间传输数据,特别是从服务层到展示层(即控制器层),以及从展示层到客户端。具体来说,DTO的作用和传输路径如下:

从服务层到展示层:

  • 服务层:处理业务逻辑,可能涉及到多个数据库操作、计算等。
  • 控制器层:接收HTTP请求,调用服务层的方法,然后将结果以DTO的形式返回给客户端。

从客户端到展示层

  • 客户端:发送包含数据的HTTP请求(例如POST请求)到服务器。
  • 展示层:接收请求,将请求体中的数据绑定到DTO对象。
  • 服务层:处理DTO对象,进行业务逻辑处理,可能涉及保存数据到数据库等操作。

其实在之前的博客当中,我们定义了一种返回给前端的格式,这就是一种传输模式image-20241129164357250

这次我们就简单介绍一下与数据库有交集的dto规范下的一种传输模式。

首先我们要定义好实体,就是我们数据库的字段,还是我们之前的那个数据库,前两篇文章可以看这里

  1. [用一个项目把控制层、业务层、持久层说明白了,每一句话都讲的很清楚 ](用一个项目把控制层、业务层、持久层说明白了,每一句话都讲的很清楚 - ivanlee717 - 博客园)
  2. lombok是怎么用的 - ivanlee717 - 博客园

我们希望用一个get请求传进来的时候,返回对应id的账户信息,用dto去传输是因为我们可能对同一个表进行多次的操作,每次返回不同的信息,那么直接对实体本身操作就会非常的复杂,所以我们单写一个userDto类

package com.ivan.store.entity.dto;import lombok.Data;@Data
public class UserDto {private String username;private String password;
}

这个就是希望传输给前端的只有数据库的账号和密码两个字段,然后加上注解就可以了。接下来去实现控制层的路径:

@GetMapping("/{id}")
public UserDto findById(@PathVariable Integer id){UserDto userDto = userService.findById(id);return userDto;
}

@PathVariable 映射 URL 绑定的占位符
通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过@PathVariable(“xxx”) 绑定到操作方法的入参中。

将id弄到我们findById方法里面来寻找对应的数据,然后用dto格式返回。

    public UserDto findById(Integer id){User user = userMapper.findById(id);UserDto userDto = new UserDto();userDto.setUsername(user.getUsername());userDto.setPassword(user.getPassword());return userDto;}
<select id="findById" resultMap="UserEntityMap">SELECT * FROM t_user WHERE uid = #{id}</select>

这样写好之后,我们就可以根据id来获取到账户信息来实现一个简易的dto使用。

image-20241203085059617

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

39. css_01

1. css的概念 CSS(Cascading Style Sheets,层叠样式表)是一种用于描述HTML文档的表现形式的样式语言。它被设计用于将网页的内容与表现形式分离,可以控制网页的外观和布局,包括间距、颜色、字体等视觉元素,而不需要直接修改HTML的结构。 2. 语法结构选择符 {样式属性: 样…

DevExpress-独立使用的控件介绍-02

XtraEditors 库提供了只能独立使用的控件,即这些控件只能依附于其他控件配合使用,不能单独使用。这些控件包括:几种类型的列表控件、数据导航控件、滚动条和一个按钮控件,这些控件都是继承于BaseStyleControl,因此支持所有Dev 控件共有的样式、外观与感觉、以及工具提示机制…

preo/creo出图比例永久设置为1:1解决方法

平时画好的PREO/CREO模型需要转工程图后再导出到CAD时发现尺寸发生改变,那怎么设置可以导出比例1:1呢?下面分享下我的设置。 1.如图1画好的模型尺寸长宽为100*100MM的。(方法一)2.如图2当工程图再转CAD导出时,尺寸自动变成3.9370*3.9370MM。到时还需手动更改尺寸这样影响…

hhdb数据库介绍(10-29)

管理 数据备份 从存储节点或灾备机房数据备份 选择灾备机房类型、从库(双主备库)存储节点类型进行备份,页面根据选择类型,对应给出提示信息。发起备份时,检测从存储节点状态是否符合备份条件。主从数据一致性检测如果机房类型选择灾备机房或者存储节点类型选择从库(双主备…

hhdb数据库介绍(10-30)

管理 数据恢复 当业务数据遭受损坏或丢失时,可使用数据恢复功能将已备份的数据重新还原到损坏或丢失的逻辑库中。 数据恢复时序图:发起恢复发起说明点击“管理->数据恢复->【发起恢复】”即可跳转到数据恢复页面恢复发起前,出于数据安全性考虑,若超过3小时没有数据备…

使用Nginx搭建流媒体服务器

目录什么是流媒体服务器Nginx如何实现流媒体服务器为Nginx安装nginx-http-flv-module概述流程操作步骤配置流媒体服务器使用OBS推流使用VLC拉RTMP使用flv.js拉流使用jls.js拉m3u8总结引用 什么是流媒体服务器 流媒体服务器(Streaming Media Server)是一种用于存储和传输音频、…

[Go] Go语言教程

Go-lang概述Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。 Go 是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go…

hhdb数据库介绍(10-28)

管理 管理菜单主要囊括对业务数据进行管理的功能,例如对数据的备份恢复或执行业务表的DDL语句等操作。 数据对象 数据对象功能可以帮助用户通过列表实时查看当前已存在的数据对象,了解业务数据的整体情况。提供了对数据对象的筛选、统计、关联、详情等信息。基础数据对象的统…

hhdb数据库介绍(10-26)

报表 数据节点吞吐量 数据节点吞吐量为计算节点发往存储节点的操作量统计,一般用SELECT、UPDATE、DELETE、INSERT、OTHER五种类型分类计算节点操作。 图形模式 数据节点吞吐量图形模式包含数据节点吞吐总量对比图、数据节点吞吐量变化趋势、集群吞吐类型对比图、逻辑库吞吐量对…

离散数学命题逻辑

离散数学命题逻辑语雀链接:https://www.yuque.com/g/wushi-ls7km/zyko8c/tfttq5zq0xyldfxn/collaborator/join?token=u0bJmfKd8DcgpA1k&source=doc_collaborator# 《离散数学命题逻辑》

值班空岗睡岗识别智慧矿山视频分析技术安防摄像机的红外(补光)技术阐述科普

在现代安防监控领域,红外线(IR)技术因其在夜间或光线不足环境中的卓越表现而变得愈发重要。本文将深入探讨红外线技术在安防监控中的应用,分析其工作原理、分类以及在不同场景下的实际应用,同时探讨红外技术在智能交通和智慧矿山等领域中面临的挑战和解决方案。通过这一讨…

图片是不是越小越好?如何优化图片呢?

图片并非越小越好,而是要在文件大小和图像质量之间找到一个平衡点。过小的图片文件大小通常意味着图像质量的损失,导致图片模糊、像素化或细节丢失,从而影响用户体验。优化的目标是在保证可接受的图像质量的前提下,尽可能减小文件大小,以提高网页加载速度和性能。 以下是一…