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_
'Spring Boot > Spring Boot' 카테고리의 다른 글
45 : Springboot(글 수정 기능) (0) | 2021.10.10 |
---|---|
44 : Springboot(글 읽기 비즈니스 로직 추가) (0) | 2021.10.08 |
41: Springboot (Delete-board) (0) | 2021.10.01 |
40: Springboot (Read-board) (0) | 2021.10.01 |
38 : Springboot (insert - test, board) (0) | 2021.09.29 |