首页 > 其他分享 >举个例子讲解DTO负责干啥

举个例子讲解DTO负责干啥

时间:2024-12-03 10:32:49浏览次数:4  
标签:findById userDto DTO 举个 讲解 dto UserDto id

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

标签:findById,userDto,DTO,举个,讲解,dto,UserDto,id
From: https://www.cnblogs.com/ivanlee717/p/18583572

相关文章

  • ultralytics框架yolov8模型训练过程(日志)讲解
    训练命令及提示        执行下面的命令,可以使用yolov8的图像目标检测功能完成训练:yolotrainmodel=yolov8x.ptdata=test.yamlepochs=150imgsz=640命令执行成功后,会先弹出以下的信息:Newhttps://pypi.org/project/ultralytics/8.3.39available......
  • ECharts柱状图-极坐标柱状图标签,附视频讲解与代码下载
    引言: 在数据可视化的世界里,ECharts凭借其丰富的图表类型和强大的配置能力,成为了众多开发者的首选。今天,我将带大家一起实现一个柱状图图表,通过该图表我们可以直观地展示和分析数据。此外,我还将提供详细的视频讲解和代码下载链接,帮助大家快速上手。一、图表效果预览  二......
  • Google Cloud 混合云部署连接方式&最佳实践&案例讲解
    混合云部署连接方式GCP的混合云部署连接方式提供了多种选择,企业可以根据自身需求选择合适的解决方案。实施最佳实践,将有助于提高混合云架构的性能、安全性和可用性。通过合理的规划和管理,企业可以充分利用混合云的优势,实现更高效的资源利用和业务拓展。CloudVPN概述:通过......
  • 农机电招平台(源码+lw+部署文档+讲解等)
    文章目录前言......
  • 基于SpringBoot的中小企业设备管理系统的设计与实现(源码+SQL脚本+LW+部署讲解等)
    专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。主要内容:免费功能设计、开题报告、任务书、中......
  • 基于SpringBoot的论坛网站系统的设计与实现(源码+SQL脚本+LW+部署讲解等)
    专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。主要内容:免费功能设计、开题报告、任务书、中......
  • 17章12节:耦合网络可视化,从常规网络图到耦合分析聚类图的深度讲解
    耦合网络分析是文献计量学中的一种重要方法,通过衡量文献、作者、出版源或国家之间的共同引用或共享参考文献的关系,揭示其内在关联性。与共被引分析不同,耦合网络强调研究对象之间的直接联系。本文将系统介绍耦合网络的概念及其类型,包括文献耦合、作者耦合、出版源耦合和国家耦......
  • HTML基本标签讲解
    1.标题标签   标题标签是以h开头的双标签,一共有6个       <h#>内容</h#> #代表的是1-6   例:<h1>一级标题</h1>      <h2>二级标题</h2>      <h3>三级标题</h3>      <h4>四级标题</h4>      <......
  • 帧动画keyframes讲解和属性作用
    帧动画1.什么是帧动画:   帧动画也叫动画,是css中非常重要的一个东西,也叫keyframe,CSS3动画是CSS中具有颠覆性的特征之一,动画可以被用来实现各种复杂的效果,如平移、旋转、缩放、倾斜、淡入淡出等。这种技术最大的优点是能够在不使用任何插件的情况下实现各种创意的动画效......
  • C#基础之集合讲解
    目录1集合1.1数组1.1.1简介1.1.2声明使用1.1.2.1声明&初始化1.1.2.2赋值给数组1.1.2.3访问数组元素1.1.3多维数组1.1.3.1声明1.1.3.2初始化二维数组1.1.3.3访问二维数组元素1.1.4交错数组1.1.5传递数组给函数1.1.6Array1.1.6.1简介1.1.6.2属性1.1.6.3方法1.2A......