게시판 작성과 수정 기능을 구현한 것을 작성
게시판 작성은 브라우저로 부터 입력받은 값을 그대로 엔티티에 반영할 수 있도록 작성하였다.
// -> 201 created와 함께 게시글 목록 페이지로 넘어갈 수 있도록 그룹번호 반환
@Operation(summary = "게시글 작성", description = "게시글 작성 메서드")
@PostMapping // 게시글 작성
public ResponseEntity<Integer> write(@RequestBody PostRequestDto postRequestDto) {
Integer kind = postService.setPostWriting(postRequestDto);
return new ResponseEntity<>(kind, HttpStatus.CREATED);
}
// 게시글 작성
@Transactional
public Integer setPostWriting(PostRequestDto postRequestDto) {
return postRepository.save(postRequestDto.toEntity()).getKind();
}
@PrePersist
public void prePersist() {
this.viewCnt = this.viewCnt == null ? 0 : this.viewCnt;
this.recommendCnt = this.recommendCnt == null ? 0 : this.recommendCnt;
}
게시판 수정은 변경된 내용분만 엔티티에 반영할 수 있도록 하기 위해 save() 메소드 대신 update() 메서드를 구현하여 @DynamicUpdate를 추가하여 적용하였다.
// -> 201 created와 함께 게시글 목록 페이지로 넘어갈 수 있도록 그룹번호 반환
@Operation(summary = "게시글 수정", description = "게시글 수정 메서드")
@PutMapping("/{id}") // 게시글 수정
public ResponseEntity<Integer> modify(@PathVariable Long id, @RequestBody PostRequestDto postRequestDto) {
Integer kind = postService.setPostModification(id, postRequestDto);
return new ResponseEntity<>(kind, HttpStatus.CREATED);
}
// 게시글 수정
@Transactional
public Integer setPostModification(Long id, PostRequestDto postRequestDto) {
Post post = postRepository.findById(id)
.orElseThrow(() -> new IllegalArgumentException("Post is not Existing"));
post.update(
postRequestDto.getKind(),
postRequestDto.getTitle(),
postRequestDto.getContent(),
postRequestDto.getPrice());
return postRequestDto.getKind();
}
@DynamicUpdate
...
public void update (Integer kind, String title, String content, Integer price) {
this.kind = kind;
this.title = title;
this.content = content;
this.price = price;
}