반응형
API를 만들다가 응답 값으로 내가 원하는 데이터만 뽑아서 원하는 JSON 데이터로 반환을 해야 했는데 처음에는 헤매다가 여기저기 찾아서 해결을 했습니다. 제가 한 방법보다 더 좋은 방법이 있을 것 같은 느낌이 들지만 한 번 정리해보겠습니다. (피드백은 언제나 환영합니다.)
예를 들어 2개의 모델이 있다고 가정합니다. (DB엔진은 PostgreSQL
)
User.java
@Data
@Entity
@Table(name="User", schema = "default$default")
public class User {
@Id
String id;
Integer year;
String name;
Date createdAt;
}
Job.java
@Data
@Entity
@Table(name="Job", schema = "default$default")
public class Job {
@Id
String id;
string user;
string name;
String note;
Date createdAt;
}
두 모델에서 조회를 하여 사람의 이름과 직업의 이름만 JSON
형태로 반환하고 싶을 때 Service
부분에 다음과 같이 작성을 해주면 됩니다.
UserService.java
@Transactional
public Map<String, Object>getEverything(String param) {
Map<String, Object> result = new HashMap<>();
User user = userRepository.findUserByParam(param);
if(user == null) return null;
Job job = jobRepository.findJobByUser(user.id);
result.put("userName", user.getName());
result.put("jobName", job.getName());
return result;
}
이를 Controller
부분에서 호출하여 확인하면 다음과 같이 JSON
형태로 응답을 받을 수 있습니다.
결과
{
"userName": "Jack Peter",
"jobName": "developer"
}
반응형
'개발 > Spring' 카테고리의 다른 글
[Spring] 점프 투 스프링부트 - SBB 추가 기능 구현 (0) | 2023.01.04 |
---|---|
[Spring] Spring과 Spring Boot 차이점 (0) | 2022.11.19 |
[Spring] Repository와 Service 구현하기 (0) | 2021.10.06 |
[Spring] 간단한 Rest API 만들어보기 (0) | 2021.09.27 |
[Spring] 단위 테스트를 위한 JUnit (0) | 2021.08.26 |
댓글