곧 프로젝트 제출이다. 이번 프로젝트때는 람다형식 코드를 작성하는데 익숙해지고 싶어 많이 작성해보았다. 그 중 가장 많이 쓴 두 가지 코드를 TIL에 작성해 볼 예정이다.
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을 사용하면 더 간단하다.
postImgRepository.findByPostId(postId).forEach(
pi -> postResponseDto.getPostImgs().add(new PostImgResponseDto(pi.getImg_url()))
);
post와 관련된 이미지를 가져와 dto에 postImgs객체에 add한다.
Post post = postRepository.findById(postId).orElseThrow(
NoSuchPostException::new
);
만약 해당 아이디의 post가 없다면 예외를 반환한다.
이 코드들도 리팩토링을 통해 수정될 예정이다. 더 분석해보아야지~~