gpt4 book ai didi

java - 如何在 Spring 引导分页中返回 DTO 而不是实体?

转载 作者:行者123 更新时间:2023-11-29 08:26:18 27 4
gpt4 key购买 nike

我的 DTO 与实体不同。如何返回 DTO 而不是带分页的实体,同时仍显示所有页面的信息?

Controller :

@GetMapping("/{name}")
public Page<Student> getStudent(@PathVariable(value = "name") String name, Pageable pageable){
Page <Student> page = studentService.getStudent(name, pageable);
return page;
}

服务:

public Page<Student> getStudent(String name, Pageable pageable){
Page<Student> students = studentRepository.findAllByName(name, pageable);
return students;
}

存储库:

@Repository
public interface StudentRepository extends
PagingAndSortingRepository<Student, Long> {
Page<Student> findAllByName(String name, Pageable pageable);
}

DTO:

@Data
public class StudentDTO extends ResourceSupport {
Long _id;
String name;
}

实体:

@Entity
@Data
@NoArgsConstructor(force = true, access = AccessLevel.PUBLIC)
public class Student {

@Id
@GeneratedValue
private Long id;
private String name;
private Long grade;
}

最佳答案

StudentDTO 类可以有一个带有 Student 参数的构造函数。

public StudentDTO(Student student) {
this._id = student.getId();
this.name = student.getName();
}

然后您可以在 Page 对象上调用 map

Page<StudentDTO> dtoPage = page.map(student -> new StudentDTO(student));

关于java - 如何在 Spring 引导分页中返回 DTO 而不是实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52648521/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com