Получите сложные данные из Springboot - PullRequest
0 голосов
/ 09 июля 2020

Я создал комплекс JSON с использованием вложенного класса.

employees{
   employeeCode
   name:"LION",
   address:"",
   jobs{
      jobCode:1
      jobName:"developer",
      jobDescription:""
   },
   salary{
      salaryCode:xxx
      fisrtMonth:xxx
      fromSecondMonth:xxx
   }

Данные получены из 3 таблиц (сотрудник, работа, зарплата) с несколькими полями (100 полей / таблица).

Теперь, чтобы установить данные для JSON, у меня есть два варианта:

  1. Использование JPA для получения 3-х сущностей, после чего с помощью сопоставителя моделей для сопоставления этих сущностей с классом dto.
Employee employee = employeeRepository.findById(employeeCode);
Job job = jobRepository.findById(jobCode);
Salary salary = salaryRepository.findById(salaryCode);

EmployeeDTO dto = new EmployeeDTO();
this.modelmapper.map(employee, dto);
this.modelmapper.map(job, dto);
this.modelmapper.map(salary, dto);
Создайте собственный запрос для получения данных из 3 таблиц, после этого установите значение для класса dto.
MemberRepository.java
@query="SELECT"
        + "e.employeeCode,"
        + "e.name,"
        + "e.address,"
        + "j.jobCode,"
        + "j.jobName,"
        + "j.jobDescription,"
        + "s.salaryCode,"
        + "s.fisrtMonth,"
        + "s.fromSecondMonth"
        + "FROM Employee e"
        + "INNER JOIN Job j on e.jobCode = j.jobCode"
        + "INNER JOIN salary on e.salaryCode = s.salaryCode"
        + "WHERE e.employeeCode=?1"
        ,nativeQuery=true)
List<Object[]> getEmployeeInfo(int employeeCode);
EmployeeService.java
List<Object[]> employeeInfoList = this.employeeRepository.getEmployeeInfo(employeeCd);
//loop employeeInfoList and set data to DTO

что мне делать? какой лучший выбор?

1 Ответ

0 голосов
/ 10 июля 2020

Я считаю, что лучшая стратегия в этом случае - сопоставить объекты с помощью @JoinColumns и аннотаций отношений. С реляционным отображением сущностей вам не понадобятся какие-либо запросы, просто запросите по идентификатору, используя стандартные методы реализаций JPA, и беспокойтесь только с сопоставителем для DTO.

E se estiver utilizando Springboot fica ainda mais simples.

...