JPA

2월 22일 JPA 회원조회 V2

Chaerin Yoo 2023. 2. 22. 16:31

@GetMapping("/api/v2/members")

public Result MemberV2(){

List<member> findMembers = memberService.findMembers();

List<memberDTO> collect = findMembers.stream()

.map(m -> new MemberDTO()) //스트림의 값(m)을 각각 MemberDto로 생성

.collect(collectors.toList()); // 가공이 끝난 Stream을 List로 변경

 

//실질적으로 collect는 현재 list 상태이다.

return new Result (Collect.size() , collect); //result로 감싸서 반환

}

 

@Data

@AllArgsConstructor

static class result<T>{ //<T> 클래스 제네릭은 해당 클래스에 들어올수 있는 타입을 지정 T는 Object전체

 private int count;

 private T data;

}

 

//result<T> 는 위 결과 collect를 Object로 한번더 감싸기 위한 용도 , 

json을 배열인상태로 반환해서는 안된다.

실제 출력에 필요한 필드들을 여기에 명시한다.

 

@Data

@AllArgsConstructor

static class MemberDTO{

 private String name;

}

//List로 만들 요소로 List에 추가할 필드값을 추가한다.

 

결과를 Stream > List로 만듬 > Obejct로 감싸준다 > Json 형태로 반환

*절대 값을 엔티티그대로 반환해서는 안된다.