1. 삭제 버튼 생성
<form action="/board/{{model.id}}/delete" method="post">
<!-- body는 필요x, id는 패스변수에 있다 -->
<button type="submit">삭제</button>
</form>
mapping url에 /delete 를 붙인 이유
- 연습을 위해 http/1.0 으로 만들었습니다.
- post 요청 방식으로 update, delete, insert 모두를 구현해야 해서 구분을 위해 적었습니다.
- 요청 방식 put, update는 http/1.1에 생깁니다.
2. Repository
public void delete(int id) {
Query q = em.createNativeQuery("delete from board_tb where id=?");
q.setParameter(1, id);
q.executeUpdate(); // insert, update, delete 때 사용
}
executeUpdate() 메서드는 insert, update, delete 쿼리문을 실행시킬 때 작성해야합니다.
3. Repository Test
@Test
public void delete_test() {
// given
int id = 1;
// when
boardRepository.delete(id);
// then
List<Board> boardList = boardRepository.findAll();
System.out.println("size : " + boardList.size());
}
4. Controller
@PostMapping("/board/{id}/delete")
public String delete(@PathVariable int id) {
boardService.게시글삭제(id);
return "redirect:/";
}
5. Service
@Transactional
public void 게시글삭제(int id) {
boardRepository.delete(id);
}
@Transactional 은 select제외 delete, insert, update에 필요합니다.
Share article