리포지토리
@Transactional
public void updateById(int id, String title, String content) {
Board board = findById(id);
board.setTitle(title);
board.setContent(content);
} // 더티채킹, 이러면 다른걸 지가 보고 알아서 업데이트 쿼리 짜서 발동시켜줌
테스트
@Test
public void updateById_test(){
// given
int id = 1;
String title = "새 제목1";
String content = "새 내용1";
// when
boardRepository.updateById(id, title, content);
em.flush();
// then
System.out.println(boardRepository.findById(id));
}



컨트롤러 수정 겟매핑
@GetMapping("/board/{id}/update-form")
public String update(@PathVariable(name = "id") Integer id, HttpServletRequest request) {
Board board = boardRepository.findById(id);
request.setAttribute("board", board);
return "board/update-form";
}
머스테치 확인(보드 적혀있는지)
{{> layout/header}}
<div class="container p-5">
<!-- 요청을 하면 localhost:8080/board/save POST로 요청됨
title=사용자입력값&content=사용자값 -->
<div class="card">
<div class="card-header"><b>글수정하기 화면입니다</b></div>
<div class="card-body">
<form action="/board/{{board.id}}/update" method="post">
<div class="mb-3">
<input type="text" class="form-control" placeholder="Enter title" name="title" value="{{board.title}}">
</div>
<div class="mb-3">
<textarea class="form-control" rows="5" name="content">{{board.content}}</textarea>
</div>
<button type="submit" class="btn btn-primary form-control">글수정하기 완료</button>
</form>
</div>
</div>
</div>
{{> layout/footer}}
수정하기 완료 누르면 나오는 포스트매핑 해야하니 dto 만들어야함
@Data
public static class updateDTO {
private String title;
private String content;
}
컨트롤러 수정
@PostMapping("/board/{id}/update")
public String findById(@PathVariable Integer id, BoardRequest.updateDTO requestDTO) {
boardRepository.updateById(id, requestDTO.getTitle(), requestDTO.getContent());
return "redirect:/board/" + id;
}