페이징 처리를 하기 전 설계를 리스트로 반환하는 방식으로 했지만, 추후 페이징 처리라는 말의 의미는 페이징 타입으로 반환하는 것이라는 것을 알게 되었고, 이에 맞춘 재설계 및 코드 재작성 단계를 거쳤다.
관리자 권한으로 접근할 수 있는 전체 판매자목록 조회 메서드
이를 통해 페이징 처리, 람다, Enum을 통한 권한 설정에 대해 보다 더 익숙해질 수 있었다.
트러블 슈팅
1. 참고 출처 :
스택 오버플로우
페이지네이션
https://hudi.blog/spring-data-jpa-pagination/
람다
2. 트러블 슈팅 기록
01. 18
1) 리스트로 반환하는 조회 메서드 & 컨트롤러 코드를 작성하는 것에는 큰 문제 없이 작성했다.
2) 그러나 페이징 처리를 하지 않고 반환하여 이를 반영하고자 함
01. 19
페이징 처리의 종류에 대해 공부
01. 20
페이징 코드 작성 완료 :
리스트로 반환하지 않아도, 페이징 타입으로 반환하면 컨텐츠 부분에 리스트와 같은 형태로 값이 반환된다.
01. 21
맞닥뜨린 오류 :
map 메서드 및 람다를 사용해 응답 DTO에 값을 담아 반환하기 위해 해당 DTO를 생성할 때, map 메서드는 Function 타입을 필요로 하는데, 람다식의 출력 결과는 <method reference> 타입으로 출력된다.
~ map(SellerDetailResponse::new)로 작성한 경우 발생한 오류
원인 : 람다, 메소드 레퍼런스에 대한 이해 부족
참고한 글 :
https://codechacha.com/ko/java8-method-reference/
메소드 레퍼런스 중 생성자 메서드 레퍼런스를 활용한 경우인데,
이 경우의 파라미터는 User 객체를 파라미터로 한다. 그러나 나는 그 객체를 파라미터로 하지 않고, 서비스 메서드에서 User 객체의 인스턴스를 조회하고 그 값을 Dto 생성자의 파라미터로 보낸 것이다.
~ 해결 예제
.map(user -> new SellerDetailResponse(user.getUsername(), user.getNickname(), user.getPhoneNum(), user.getSellerDetail()));
혹은
public SellerDetailResponse(User user) {
this.username = user.getuUsername();
this.nickname = user.getNickname();
this.phoneNum = user.getPhoneNum();
this.sellerDetail = user.getSellerDetail();
}
한 후
map(SellerDetailResponse::new); 로 작성한 경우 문제 없음
'내일배움캠프 4기 스프링 > 프로젝트📙' 카테고리의 다른 글
개인 과제 : Spring Security 적용 블로그 Backend 서버 만들기 (0) | 2023.01.04 |
---|---|
Spring 프로젝트 Check-list (0) | 2022.12.30 |
~12. 19까지 중간 프로젝트 전 개인 과제 리뷰 및 개선할 점 정리 (0) | 2022.12.19 |
개인 과제 : JWT토큰을 활용한 Http 통신 중 상태를 저장 및 유지하기 (0) | 2022.12.18 |
개인 과제 : Springboot를 활용한 블로그 Backend 서버 만들기 (0) | 2022.12.08 |