본문 바로가기
Project/🥑JPA + SpringSecurity 게시판

[JPA + SpringSecurity 게시판] #9 글 삭제하기

by 로띠 2022. 5. 18.

ABoardcado🥑ABoardcado🥑ABoardcado🥑ABoardcado🥑ABoardcado🥑ABoardcado

 

 

이전글에서 글 수정까지 만들었다

 

✂️글 삭제 하러 가보자 ✂️

 


 코딩시작 👩🏻‍💻 

기존 class에 아래 코드를 추가

 

 

 

 

 

 

1. Service

 

 

 

 삭제를 구현하는 메소드() 생성

controller에서 “post/{id}”가 @DeleteMapping되면

id값을 넣어 해당 메소드를 호출해 글삭제 실행

 

 

 

 

 

[ BoardService ]

@Transactional
    public void deletePost(Long id) {
        boardRepository.deleteById(id);
    }

 

 deleteById(id);

  • save(), findById, findByEmail 등 우린 이런 메소드()를 만든적이 없다
  • JPA Repository를 상속하면 메소드명을 스스로 해석하고 JPQL을 생성하고
    •  By ‘를 기준으로 Where절에 대응
  • Entity 기준으로 검색해 처리해준다

 

 


2. Controller

 

 

 

글삭제는 작성, 수정과 다르게 삭제에 필요한 view가 없기 때문에

 

@DeleteMapping 으로 받아

위의 BoardService에서 정의한 deletePost()를 실행해 view전환 없이 바로 삭제

 

 

 

 

 

[ BoardController ]

@DeleteMapping("/post/{id}")
    public String delete(@PathVariable("id") Long id) {
        boardService.deletePost(id);
        return "redirect:/";
}

 

✅ Html에서 @DeleteMapping 이용하는 법은

지난 글인 글 수정 @PutMapping에서 실컷 설명했다 🤮

 

 

 @PathVariable(”id”) 으로 요청이 들어온 id값을 이용해

deletePost(id); id를 넣어 삭제로직을 호출, 실행

 

 

 


3. Html

 

 

 글 상세보기 페이지에서 수정버튼 옆에 삭제버튼을 추가

 

 

 

[ detail.html ]

			<form id="delete-form" th:action="@{'/post/' + ${board.id}}" method="post">
			    <div class="row mt-3">
			        <div class="col-auto">
			            <a class="btn btn-info" th:href="@{'/post/edit/' + ${board.id}}" role="button">수정</a>
			            <input type="hidden" name="_method" value="delete"/>
			            <button id="delete-btn" type="submit" class="btn btn-danger">삭제</button>
			        </div>
			        <div class="col-left mr-auto"></div>
			        <div class="col-auto">
			            <a class="btn btn-success" th:href="@{'/'}" role="button">목록</a>
			        </div>
			    </div>
			</form>
		</div>
	</div>
</html>

코드는 약 16행 쯤 <class = “row mt-3”> 태그 바로 위부터 아래내용을 전문 교체 

  • 👇👇 헷갈리니 detail.html 전문 추가 

 

 Put 전송과 동일한 방식이지만

삭제 view는 필요 없으니 action으로 바로 submit 하게 되고

아래 방식으로 post가 아닌 delete로 전송하게 된다

 

1. <form method="Post">  설정 후

2. <input type="hidden" name="_method" value="delete"/> 같이 전송

 

 

 

 Html에서 type=“hidden” 이용하는 법은

글 수정 @PutMapping에서 실컷 설명했다 🤮

 

 

모든 button을 <form> 안에 묶은 이유는

form만의 css가 따로 있어서 button 간격이 맘에 들지 않았다ㅜㅜ

 

 

 

후후 😚

이제 확인 해보자~

 

 

 

 

 

😍 GOOD !

yeah !! 이렇게 JPA CRUD는 끝났다

하지만 끝낼 수 없다

현재 상황은 글이 늘어날 수록 스압 쩌는 구조,,ㅋㅋ

 

 

 

다음편에서 페이징처리를 해보자