[개발] 게시판 작성과 수정

이진규·2022년 12월 31일
1
post-thumbnail

시작

게시판 작성과 수정 기능을 구현한 것을 작성

게시판 작성

게시판 작성은 브라우저로 부터 입력받은 값을 그대로 엔티티에 반영할 수 있도록 작성하였다.

  • PostController
	// -> 201 created와 함께 게시글 목록 페이지로 넘어갈 수 있도록 그룹번호 반환
	@Operation(summary = "게시글 작성", description = "게시글 작성 메서드")
	@PostMapping // 게시글 작성
	public ResponseEntity<Integer> write(@RequestBody PostRequestDto postRequestDto) {

		Integer kind = postService.setPostWriting(postRequestDto);
		return new ResponseEntity<>(kind, HttpStatus.CREATED);
	}
  • PostService
	// 게시글 작성
	@Transactional
	public Integer setPostWriting(PostRequestDto postRequestDto) {

		return postRepository.save(postRequestDto.toEntity()).getKind();
	}
  • Entity
    @PrePersist
    public void prePersist() {
        this.viewCnt = this.viewCnt == null ? 0 : this.viewCnt;
        this.recommendCnt = this.recommendCnt == null ? 0 : this.recommendCnt;
    }

게시판 수정

게시판 수정은 변경된 내용분만 엔티티에 반영할 수 있도록 하기 위해 save() 메소드 대신 update() 메서드를 구현하여 @DynamicUpdate를 추가하여 적용하였다.

  • PostController
	// -> 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);
	}
  • PostService
	// 게시글 수정
	@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();
	}
  • Entity
@DynamicUpdate
...
    public void update (Integer kind, String title, String content, Integer price) {
        this.kind = kind;
        this.title = title;
        this.content = content;
        this.price = price;
    }
profile
항상 궁금해하고 공부하고 기록하자.

0개의 댓글