[내배캠/TIL(7/28)]프로젝트에서 람다함수 사용

손홍서·2022년 7월 28일
0

day68 TIL

곧 프로젝트 제출이다. 이번 프로젝트때는 람다형식 코드를 작성하는데 익숙해지고 싶어 많이 작성해보았다. 그 중 가장 많이 쓴 두 가지 코드를 TIL에 작성해 볼 예정이다.

  • 이는 전체 post중 좋아요가 많은 순으로 post 8개를 가져오는 코드이다.
List<PostResponseDto> posts = postRepository.findTop8ByOrderByLikeCountDesc().stream().map(
                p -> new PostResponseDto(
                        p.getId(), p.getTitle(), p.getPrice(), p.getAddress(), p.getLikeCount(), p.isSold()
                )
        ).collect(Collectors.toList());

postRepository에서 가져온 post객체들을 리턴을 할때는 dto에 담아서 반환해야한다. for문으로 돌릴 수도 있지만 stream을 사용하면 더 간단하다.

  • 다음은 dto에 post에 관련된 이미지를 로드하는 코드이다(LAZY이기에 따로 로드 필요)
postImgRepository.findByPostId(postId).forEach(
                pi -> postResponseDto.getPostImgs().add(new PostImgResponseDto(pi.getImg_url()))
);

post와 관련된 이미지를 가져와 dto에 postImgs객체에 add한다.

  • post를 postId로 찾는 코드이다.
Post post = postRepository.findById(postId).orElseThrow(
                NoSuchPostException::new
);

만약 해당 아이디의 post가 없다면 예외를 반환한다.

이 코드들도 리팩토링을 통해 수정될 예정이다. 더 분석해보아야지~~

profile
Hello World!!

0개의 댓글