본문 바로가기

Spring Boot/Spring Boot

42 : Springboot (글과 댓글 함께 출력)

BoardDTO의 AllArgsConstructor -> RequiredArgsConstructor 로 수정


@AllArgsConstructor

  • 클래스에 모든 필드에 대한 생성자를 자동으로 생성해준다.
  • 단점 : 기존에 멤버 변수의 순서를 바꾼다면, 기존 생성자의 파라미터의 순서가 바뀐다. 만약 두 멤버 변수의 타입이 동일하다면 인지 하기 어렵다

 

@RequiredArgsConstructor

  • 이 어노테이션은 초기화 되지않은 final 필드나, @NonNull 이 붙은 필드에 대해 생성자를 생성해 준다

 

리뷰 전 코드

AllArgConstructor 때문에 모든 필드에 생성자를 자동으로 생성해서

이때까지 List<CommentDTO> 를 사용할수 없었다..

이것 때문에 위 방법을 포기하고 LinkedHashMap으로 하나하나 Hashmap에 put해서 데이터를 넣어서 구현했다.

    public ApiResponse<BoardDTO> getBoardById(int id) {
        BoardDTO data = boardDAO.getBoardById(id);
        List<CommentDTO> cData = boardDAO.getBoardComment(id);
        String isDel1 = boardDAO.getBoardByIdOri(id).getIsDel();
        if(isDel1.equals("Y")){
            return new ApiResponse(false,"board id "+ id +" is already deleted");
        }else {
            LinkedHashMap<String,Object> member = new LinkedHashMap<>();
            member.put("id",data.getId());
            member.put("author",data.getAuthor());
            member.put("subject",data.getSubject());
            member.put("content",data.getContent());
            member.put("comments",cData);

            return new ApiResponse(true, member);
        }
    }

아래 사진은 위 코드를 실행했을때 결과

 


 

수정된 코드

이번엔 BoardDTO의 @AllArgConstructor를 @RequiredArgsConstructor 로 수정하고 구현해보자.

@RequiredArgs.. 로 수정했다면 private List<CommentDTO> comments = null; 으로 comments 생성

comments값이 없을 수 있으니 초기값은 null로 잡는다.

    public ApiResponse<BoardDTO> getBoardById(int id) {
        BoardDTO data = boardDAO.getBoardById(id);
        List<CommentDTO> cData = boardDAO.getBoardComment(id);
        String isDel1 = boardDAO.getBoardByIdOri(id).getIsDel();
        if(isDel1.equals("Y")){
            return new ApiResponse(false,"board id "+ id +" is already deleted");
        }else {
            data.setComments(cData);
            return new ApiResponse(true, data);
        }
    }

data.setComments(cData); 로 id에 해당하는 댓글 목록을 comments필드에 넣어주고 return한다

 

 

 

GitHub_

 

GitHub - dwc04112/SpringbootApi

Contribute to dwc04112/SpringbootApi development by creating an account on GitHub.

github.com