我如何在 spring 引导中使用 Dtos 修复 类 的输出与关系?

How can i fix output of Classes with relationship using Dtos in spring boot?

我的class

public class Teacher

与学生有多对多关系:

public class Student

当我 return 老师我只想要他们的学生 ID,而不是关于他们学生的完整信息。

我们有两个 Dto (DataTransferObject):带有一些变量的 StudentDto 和 TeacherDto。

我该怎么做才能解决这个问题?

我也希望学生 return 只需要教师的姓名或 ID。相反,他们 return 完整的 dto 教师名单。

谢谢。

在您的 TeacherDto 中,您不应该有 StudentDto 的列表,而是 Integer 的列表(如果 Integer 是 id 类型)。比你应该实现一些映射逻辑,例如在构造函数中,像这样:

public class TeacherDto {
    private final Set<Integer> studentIds;

    public TeacherDto(Teacher teacher) {
        this.studentIds = teacher.getStudents().stream()
                .map(Student::getId)
                .collect(Collectors.toSet());
    }

    public Set<Integer> getStudentIds() {
        return studentIds;
    }
}

如果您有许多不同的 DTO,a lot of libraries 可以帮助您自动进行它们之间的映射。