# 데이터 삭제하기
## 미션
데이터를 삭제하고 그 결과를 확인하시오.
![홍팍-스프링-부트-입문-데이터-삭제-미션](http://drive.google.com/thumbnail?export=view&sz=w960&id=1e0VCCSMVUftkYVJXGD4-GBuB6x_KyNbN)
## 02:18 삭제 버튼 추가 - a 태그와 HTTP 메소드
#### ../articles/show.mustache
```
{{>layouts/header}}
<table class="table">
...
</table>
<a href="/articles/{{article.id}}/edit" class="btn btn-primary">Edit</a>
<!-- 삭제 링크 추가 -->
<a href="/articles/{{article.id}}/delete" class="btn btn-danger">Delete</a>
<a href="/articles">Go to Article List</a>
{{>layouts/footer}}
```
## 05:19 삭제 요청 받기 - Controller, GetMapping, DeleteMapping
#### ../controller/ArticleController
```
...
@Controller
@Slf4j
public class ArticleController {
...
@GetMapping("/articles/{id}/delete")
public String delete(@PathVariable Long id) {
log.info("삭제 요청이 들어왔습니다!!");
// 1: 삭제 대상을 가져옴
Article target = articleRepository.findById(id).orElse(null);
log.info(target.toString());
// 2: 대상을 삭제
if (target != null) {
articleRepository.delete(target);
}
// 3: 결과 페이지로 리다이렉트
return "redirect:/articles";
}
}
```
## 13:26 삭제 완료 메시지 - RedirectAttributes, addFlashAttribute
#### ../controller/ArticleController
```
...
@Controller
@Slf4j
public class ArticleController {
...
@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";
}
}
```
#### ../layouts/header.mustache
```
<!doctype html>
<html lang="en">
<head>
...
<body>
<!-- navigation -->
<nav class="navbar navbar-expand-lg navbar-light bg-light">
...
</nav>
<!-- alert msg -->
{{#msg}}
<div class="alert alert-primary alert-dismissible">
{{msg}}
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
{{/msg}}
```
## 🔥 구글링 훈련하기
- JPA Repository delete
- Spring RedirectAttributes addFlashAttribute
- Bootstrap Alert