728x90
반응형
| 데이터 삭제 과정
- 클라이언트가 HTTP 메서드로 특정 게시글의 삭제 요청
- 요청을 받은 컨트롤러는 repository를 통해 DB에 저장된 데이터를 찾아 제
기존에 데이터가 있는 경우에만 수행 - 삭제가 완료되면 클라이언트를 결과 페이지로 리다이렉트
| 데이터 삭제하기
1) Delete 버튼 추가
show.mustache 파일에 Delete 버튼을 추가하였습니다.
<a href="/articles/{{article.id}}/delete" class="btn btn-danger">Delete</a>
2) Delete 요청을 받아 데이터 삭제
HTTP 메서드의 DELETE 메서드를 써야 하지만
HTML에서는 POST와 GET 이외에 다른 메서드를 제공하지 않아
GET 방식으로 삭제 요청을 받아 처리
- delete() 메서드 만들기
GetMapping() 어노테이션으로 작성했으며
요청 접수가 오면 처리하도록 했습니다.
- 삭제할 대상 가져오기
DB에 접근해 데이터를 처리할 때는 JPA의 repository를 이용해야 합니다.
findById(id) 메서드로 해당 id를 가진 데이터를 찾고 target 변수에 저장하고 없다면 null을 반환합니다.
그리고 GetMapping()의 URL 주소에서 가져와 delete()의 매개변수로 써야 하므로
@PathVariable Long id를 써 처리합니다.
- 대상 엔티티 삭제
조건문으로 target이 null이 아니면 코드를 수행하게 했습니다.
삭제는 repository의 delete() 메서드를 이용해 삭제를 했습니다.
- 결과 페이지로 리다이렉트
return에 redirect:/articles를 작성합니다.
@GetMapping("/articles/{id}/delete")
public String delete(@PathVariable Long id, RedirectAttributes rttr) {
log.info("삭제 요청이 들어왔습니다!!");
// 1. 삭제할 대상 가져오기
Article target = articleRepository.findById(id).orElse(null);
log.info(target.toString());
// 2. 대상 엔티티 삭제하기
if (target != null) {
articleRepository.delete(target);
rttr.addFlashAttribute("msg", "삭제됐습니다!");
}
// 3. 결과 페이지로 리다이렉트하기
return "redirect:/articles";
}
결과)
728x90
반응형
'JAVA > 코딩자율학습-스프링부트' 카테고리의 다른 글
[코딩 자율학습 스프링부트] 10장 REST API와 JSON (0) | 2024.12.03 |
---|---|
[코딩 자율학습 스프링부트] 9장 CRUD와 SQL 쿼리 종합 (0) | 2024.12.02 |
[코딩 자율학습 스프링부트] 7장 게시글 수정하기 : Update (0) | 2024.11.30 |
[코딩 자율학습 스프링부트] 6장 게시판 내 페이지 이동하기 (0) | 2024.11.29 |
[코딩 자율학습 스프링부트] 5장 게시글 읽기 : Read (0) | 2024.11.28 |