• java中的DTO


    在Java中,DTO代表数据传输对象(Data Transfer Object)。DTO是一种设计模式,用于在应用程序的不同层之间传输数据。DTO通常用于将数据从一个层(如持久化层)传递到另一个层(如视图层)。

    DTO的主要目的是封装数据,将前端发送的数据封装为一个java对象,使得数据可以在不同的层之间传输,同时保持数据的完整性和一致性。DTO通常包含数据成员和getter/setter方法,用于访问和修改数据。

    下面是一个使用DTO的简单例子:

    假设我们有一个用户管理系统,其中包含用户实体类(User)。User类有姓名(name)、年龄(age)和电子邮件(email)等属性。

    在前端,我们有一个表单,用户可以填写姓名和电子邮件,提交表单后,数据将被发送到后端进行处理。

    在后端,我们可以定义一个DTO(AddApplicationDTO),该DTO包含前端表单中需要的数据成员,即姓名和电子邮件。在控制器中,我们可以使用DTO来接收前端传递的数据,并将数据传递给服务层进行处理。

    在这个例子中,DTO扮演了数据传输对象的角色,它用于封装和传输前端表单中的数据,使得数据可以在前后端之间传输,并且可以在不同的层之间进行转换。

    代码示例:

    在Java中定义DTO:

    public class AddApplicationDTO {
        private String name;
        private String email;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getEmail() {
            return email;
        }
    
        public void setEmail(String email) {
            this.email = email;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    在控制器中使用DTO:

    @RestController
    public class UserController {
        @PostMapping("/addUser")
        public String addUser(@RequestBody AddApplicationDTO user) {
            // 将DTO中的数据传递给服务层进行处理
            UserService userService = new UserService();
            boolean result = userService.addUser(user);
            if (result) {
                return "用户添加成功!";
            } else {
                return "用户添加失败!";
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    前后端交互示例(以JSON格式为例):

    前端发送请求:

    {
        "name": "张三",
        "email": "zhangsan@example.com"
    }
    
    • 1
    • 2
    • 3
    • 4

    后端接收请求并处理:

    在服务层中,我们可以将DTO中的数据传递给数据库层,将数据存储到数据库中。在这个例子中,我们不需要DTO中的所有数据,只需要将name和email传递给数据库层即可。这样,我们可以减少不必要的数据传输和转换,提高性能和效率。

  • 相关阅读:
    【软件测试】测试新人咋迅速成为bug小能手?刮目相看......
    测试人需要的数据库知识:MySQL常用语法
    代码随想录算法训练营第23期day27|93.复原IP地址、78.子集、90.子集II
    五种方式实现 Java 单例模式
    一次服务器被入侵的处理过程分享
    java计算机毕业设计商场会员管理系统源码+系统+数据库+lw文档+mybatis+运行部署
    【云原生Kubernetes系列】KubeSphere容器调度平台
    计算机竞赛 机器视觉目标检测 - opencv 深度学习
    vscode设置参考线
    Linux编译宏BUILD_BUG_ON_ZERO
  • 原文地址:https://blog.csdn.net/drhnb/article/details/132797575