DTO构造的几种方式

本文介绍了DTO(Data Transfer Object)构造的三种常见方式:1) 使用构造函数,2) 通过静态构造方法,3) 应用Builder模式的build方法。详细阐述了每种方式在创建和初始化DTO对象时的应用。
摘要由CSDN通过智能技术生成

DTO构造的几种方式:

1 构造函数

public class TestDTO {
    private String name;
    private int age;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

构造对象的方法:

   TestDTO testDTO = new TestDTO();
        testDTO.setName("test");
        testDTO.setAge(18);


2 静态构造方法

public class TestDTO {
    private String name;
    private int age;
    
    public static TestDTO of(String name,int age){
        TestDTO testDTO = new TestDTO();
        testDTO.name = name;
        testDTO.age = age;
        return testDTO;
    }
}
构造对象的方法:
JPA(Java Persistence API)是Java平台中用于持久化数据的规范,它允许开发者通过Java来管理关系型数据。在使用JPA时,通常会通过Repository接口来操作数据库,而Spring Data JPA为这个过程提供了便利,允许我们通过定义接口来实现数据访问层(DAO)的编写。 在Spring Data JPA的Repository中,你可以使用Spring提供的查询方法命名规则来声明查询,也可以使用`@Query`注解直接编写原生的SQL语句或JPQL语句。如果你需要将查询结果直接映射到一个数据传输对象(DTO),而不是JPA实体类,你可以使用构造函数绑定的方式构造函数映射到DTO通常涉及以下几个步骤: 1. 定义一个DTO类,这个类通常不包含任何JPA注解。 2. 在Repository接口中,使用`@Query`注解编写SQL查询语句,并指定返回值类型为DTO类的实例。 3. 使用`@Query`注解的`nativeQuery`属性来指定是否为原生SQL查询。 4. 使用`ConstructorResult`和`ConstructorExpression`来指定构造函数参数,这些参数将与查询结果的列名相对应。 以下是一个简单的例子: ```java // DTO类 public class MyDto { private final String columnOne; private final Integer columnTwo; public MyDto(String columnOne, Integer columnTwo) { this.columnOne = columnOne; this.columnTwo = columnTwo; } // getters and setters } // Repository接口 public interface MyEntityRepository extends JpaRepository<MyEntity, Long> { @Query(value = "SELECT new MyDto(e.columnOne, e.columnTwo) FROM MyEntity e") List<MyDto> findCustomDto(); } ``` 在这个例子中,`findCustomDto`方法使用`@Query`注解定义了一个查询,返回值是一个DTO对象列表。查询结果将通过`MyDto`的构造函数映射到DTO对象中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值