본문 바로가기

스프링 스터디

게시글 삭제 기능 및 수정 기능 구현 / 2022-02-17

게시글의 id를 검색하여 삭제하거나 수정하는 기능을 구현한다.

 

 

게시글 삭제

게시글 삭제 기능은 먼저 게시글의 id를 url를 통해 받는다. 받은 id를 검색하여 없으면 에러를 띄워주고, 있으면 해당되는 게시글을 삭제한다.

 

 

controller.PostYwooController

    @DeleteMapping("/{id}")
    public void deletePost(@PathVariable long id){
        postYwooService.deletePost(id);
    }

 

 

 

service.post.PostYwooService

    @Transactional
    public void deletePost(long id){
        postYwooRepository.findById(id).orElseThrow(()->{
            throw new ApiExceptionYwoo(ErrorCodeEnum.POST_NOT_FOUND);
        });
        postYwooRepository.deleteById(id);
    }

 

에러에 해당되는 ApiException은 커스텀 에러로, Not Found 에러가 났을 때 커스텀한 에러를 메세지와 함께 알려준다.

 

 

 

게시글 삭제를 확인하기 위해 게시글을 생성해준다.

 

 

잘 들어간 것을 확인할 수 있다.

 

 

게시글을 삭제한다.

게시글이 삭제된 것을 확인할 수 있다.

 

 

 

 

 


게시글 수정

게시글 수정 기능은 수정할 게시글의 id를 받고, body로 수정할 내용을 입력받아 해당되는 게시글의 내용을 수정한다.

 

 

dto.PostRequeestDto

package com.second.spring_study.dto.request.ywoo;

import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotNull;

@Getter
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class PostRequestDto {
    @NotNull
    String title;
    @NotNull
    String content;


}

dto는 형식을 맞추기 위해 만들어졌다. title과 content를 받도록 되어있다.

 

 

 

controller.PostYwooController

    @PutMapping("/{id}")
    public void updatePost(@PathVariable long id, @RequestBody PostRequestDto postRequestDto){
        postYwooService.updatePost(id, postRequestDto);
    }

수정은 put을 통해 이루어진다. body를 통해 수정할 내용을 입력받는다. 

 

 

 

 

service.postYwooService

    @Transactional
    public void updatePost(long id, PostRequestDto postRequestDto){
       PostYwoo postYwoo=postYwooRepository.findById(id).orElseThrow(()->{
            throw new ApiExceptionYwoo(ErrorCodeEnum.POST_NOT_FOUND);
        });
        postYwoo.updatePost(postRequestDto.getTitle(), postRequestDto.getContent());
    }

삭제 기능과 마찬가지로 들어온 id를 검색하여 없으면 에러를 발생시킨다. PostYwoo는 엔티티로 updatePost를 실행하면 입력 받은 내용을 통해 수정이 이루어진다.

 

 

 

entity.postYwoo.PostYwoo

    public void  updatePost(String title, String content){
        this.postTitle=title;
        this.postContent=content;
    }

들어온 내용을 넣어준다. 여기서 this는 해당 메서드를 호출한 객체를 말한다. 즉 postYwoo이다. postYwoo는 findById를 통해 찾은 객체를 가지고 있기 때문에 title과 content를 제외한 나머지를 정보를 가지고 있다. 따라서 title과 content를 제외한 나머지 값은 원래의 값으로 유지된다.

 

 

 

게시글 수정을 확인하기 위해 게시글을 생성한다.

 

 

 

여러번 생성했기 때문에 여러개의 게시글이 생성됐다. 아무튼 잘 생성된 것을 확인할 수 있다.

 

 

게시글을 수정한다.

 

 

수정이 잘 된것을 확인할 수 있다.

 

 

 

 


 

🔗 : ISSUES #43 게시글 수정 기능

🔗 : ISSUES #44 게시글 삭제 기능

🔗 : Spring Study