
<수정 페이지> 만들고 기존 데이터 불러오기

1. <상세페이지> 에서 edit 버튼 클릭하기
데이터를 수정해 DB에 반영 후 <상세페이지>로 리다이렉트하기

1. 폼 데이터(수정 요청 데이터)를 DTO에 담아 컨트롤러에서 받는다
show.mustache 파일에 들어가
/table 폼 코드 아래에 아래 코드를 작성하여 버튼을 만든다.

CSS를 적용해 속성 추가
<a href="/articles/{{article.id}}/edit" class="btn btn-primary">Edit</a>
{{article.id}} -> 각 id값으로 페이지 이동
이 때, article.id로 작성하지 않고 그냥 id로 작성하기 위해서는
폼 태그를 {{#article}},{{/article}}로 감싼다.
Edit 버튼을 누르면 Edit요청을 받아 데이터를 가져오도록 컨트롤러를 작성해보자
컨트롤러에 edit() 메서드 작성
1. 맨 아래에 edit()메서드 추가
Article articleEntity = articleRepository.findById(id).orElse(null); model.addAttribute("article", articleEntity);edit.mustache 파일 작성
1. 푸터, 헤더 샌드위치 구조 만들기
<form class="container" action="" method="post">
(중략)
<a href="/articles/{{article.id}}">Back</a> -> Back버튼 수정 페이지에 기존 내용 나오게 하기
edit.mustache에 제목은 input, 내용은 textarea value="{{article.title}}", {{article.content}}속성 추가하기
```java
<input type="text" class="form-control" name="title" value="{{article.title}}"
(중략)
이 때, article. ~~로 작성하기 싫으면 폼태그 article로 감싸기


CRUD(Create Read Update Delete)
서버 재시작마다 데이터를 입력하기 귀찮으니 더미 데이터를 생성해두자.
src > main > resource에 data.sql을 생성, 아래 코드 작성하여 데이터 추가
```sql
INSERT INTO article(id, title, content) VALUES(1, '가가가가', '1111');
INSERT INTO article(id, title, content) VALUES(2, '나나나나', '2222');
INSERT INTO article(id, title, content) VALUES(3, '다다다다', '3333');
```
데이터 초기화 사용은 추가설정필요
src > main > resource > application.properties 를 열어 아래 옵션 추가
```java
datasource-initializaion=true
```
<input name="id" type="hidden" value="{{id}}">
//타입을 hidden으로 하면 화면에 표시를하지 X
```컨트롤러에 update() 메서드 작성
1. @PostMapping("/articles/update") -> Post로 해당 URL 요청을 받게하기
수정 데이터를 DTO에 담기
-> update() 메서드의 매개변수로 DTO를 담아온다
수정 폼 input에 id를 추가하였으므로 dto에도 id 변수를 추가해줘야함.

확인을 위해 log찍어보기
log.info(form.toString());
로그가 잘 찍힌다면 이제 DTO를 엔티티로 변환하기
Article articleEntity = form.toEntity();
log.info(articleEntity.toString());
엔티티를 DB에 저장하기 -> 먼저 기존 데이터를 가져온 후 기존 데이터를 갱신해야함
//DB에서 기존 데이터 가져오기
Article target = articleRepository.findById(articleEntity.getID()).orElse(null);
//기존 데이터 값 갱신하기
if(target != null){
articleRepository.save(articleEntity);
}
수정 결과 페이지로 리다이렉트하기
```java
return "redirect:/article/" + articleEntity.getID();
```