조회 🕵🏻

MainController.java

@GetMapping("read/review/{id}")
    public List<ReviewResponseDTO> FindReview(@PathVariable Long id){
        return reviewService.findReview(id);
    }
  • 조회이므로 Get방식을 사용하였다.
  • 매개변수로는 id를 받는다. 여기에서 id란 Review의 아이디가 아닌 healthInfo의 id이다.
  • reviewService의 findReview를 실행하며 여기에도 매개변수를 id로 설정하였다.

ReviewServiceImpl.java

 @Override
    public List<ReviewResponseDTO> findReview(Long id) {
        HealthInfo healthInfo = healthRepository.findById(id).orElseThrow(()->
                new IllegalArgumentException("해당 게시글이 존재하지 않습니다."));
        List<Review> reviews = healthInfo.getReviews();
        return reviews.stream().map(ReviewResponseDTO::new).collect(Collectors.toList());

    }
  • healthInfo에 매개변수로 들어온 id가 있으면 찾아서 healthinfo객체에 넣고 만약에 없다면 콘솔에 해당 게시글이 존재하지 않습니다라는 문구를 출력한다.
  • Review타입인 list를 선언한뒤 healthInfo에서 getReview로 해당 게시글의 리뷰들을 전부 가지고 와 리스트에 넣는다.
return reviews.stream().map(ReviewResponseDTO::new).collect(Collectors.toList());
  • reviews들을 reviewresponseDTO객체로 변환한뒤 리스트에 추가한 값을 리턴한다.
  • 사실 기능 구현하면서 구글링을 많이 했었는데 거기서 가져온 코드를 나에게 맞게 변환시켰다.
  • ㅜ ㅜ 사실 이부분은 조곰 뭔말인지 모르겠어서 이곳저곳 많이 찾아봤는데 여기 사례가 가장 나와 맞는 것 같아서 링크 걸어둔다 !

저장 📦

MainController.java

    @PostMapping("/save/review/{id}")
    public ResponseEntity SaveReview(@PathVariable Long id, @RequestBody ReviewRequestDTO dto){
        return ResponseEntity.ok(reviewService.saveReview(id,dto));
    }
  • 저장도 마찬가지로 해당 게시글에 리뷰를 추가하는 것이기 때문에 @PathVariable을 사용해서 게시글의 id를 가져온다.
  • reviewService의 saveReview를 id와 저장할 데이터가 들어있는(요청데이터) ReviewRequestDTO객체인 dto를 매개변수로 실행한다.

ReviewServiceImpl.java

@Override
    public Long saveReview(Long id, ReviewRequestDTO reviewRequestDTO) {
        HealthInfo healthInfo = healthRepository.findById(id).
                orElseThrow(()->new IllegalArgumentException
                        ("댓글 쓰기 실패: 해당 게시글이 존재하지 않습니다." + id));
        reviewRequestDTO.setHealthInfo(healthInfo);

        Review review = reviewRequestDTO.toEntity(reviewRequestDTO);
        reviewRepository.save(review);
        return reviewRequestDTO.getId();
    }
  • 조회랑 비슷하게 해당 게시글이 존재하지 않으면 리뷰를 쓸 수 없게한다.
    healthInfo에 매개변수로 들어온 id가 있으면 찾아서 healthinfo객체에 넣고 만약에 없다면(=게시글이 존재하지 않는다면) 콘솔에 해당 게시글이 존재하지 않습니다라는 문구를 출력한다.

  • review객체를 하나 만들고, 전달받은 데이터를 toEntity로 Entity로 변환한다.
    변환된 review객체를 Repository의 save메서드로 저장한다.
    리턴값으로는 리뷰의 아이디를 반환한다.

0개의 댓글