[익명 게시글을 쓰는 블로그 만들기 13]
detail.mustache 파일
삭제버튼을 만들어form태그로 감쌈
form의action속성에 주소값을 설정하고,method는POST로 설정- Spring을 연습하기 위해 JavaScript 없이 HTML 1.0 버전으로 연습
- GET과 POST만 사용할 수 있으므로 주소에
delete를 추가
{{> layout/header}}
<section>
<form action="/board/{{model.id}}/delete" method="post">
<button type="submit">삭제</button>
</form>
<div>
번호: {{model.id}}<br>
제목: {{model.title}}<br>
내용: {{model.content}}<br>
작성일: {{model.createdAt}}<br>
</div>
</section>
</body>
</html>BoardRepository 클래스
BoardRepository에delete메서드를 구현하여 게시글의id를 기준으로 DB에서 해당 게시글을 삭제
@RequiredArgsConstructor
@Repository
public class BoardRepository {
private final EntityManager entityManager;
public void delete(int id) {
Query q = entityManager.createNativeQuery("delete from board_tb where id = ?");
q.setParameter(1, id);
q.executeUpdate();
}
}BoardRepositoryTest 클래스 - 테스트 클래스
BoardRepository에서 구현한delete메서드를 테스트
- given
- 테스트를 위한 입력 값을 설정
- DB에서 삭제할 게시글의
id를 설정
- when
- 테스트할 메서드를 실행
boardRepository.delete()메서드를 호출하여 DB에서 해당 게시글을 삭제
- then
- 결과를 검증 ⇒ 출력으로 결과를 검증하는 방식 채택
- 삭제 여부는 리스트의 사이즈로 확인
@Import(BoardRepository.class)
@DataJpaTest
public class BoardRepositoryTest {
@Autowired
BoardRepository boardRepository;
@Test
public void delete_test() {
// given
int id = 1;
// when
boardRepository.delete(id);
// then(eye)
List<Board> boardList = boardRepository.findAll();
System.out.println("size: " + boardList.size());
}
}BoardController 클래스
@PostMapping을 통해/board/{id}/delete경로로 들어오는 POST 요청을delete메서드에서 처리
@PathVariable("id")어노테이션을 사용하여 삭제할 게시글의id를 받아옴
boardService에서게시글삭제메서드를 호출하여 해당 게시글을 삭제
"redirect:/"를 반환하여“/”경로로 리다이렉트
@RequiredArgsConstructor
@Controller
public class BoardController {
private final BoardService boardService;
@PostMapping("/board/{id}/delete")
public String delete(@PathVariable("id") int id) {
boardService.게시글삭제(id);
return "redirect:/";
}
}BoardService 클래스
게시글삭제메서드를 구현하여,id를boardRepository의delete메서드를 사용해 DB에서 해당 게시글을 삭제
@Transactional어노테이션을 사용해 DB 트랜잭션을 관리
@RequiredArgsConstructor
@Service
public class BoardService {
private final BoardRepository boardRepository;
@Transactional
public void 게시글삭제(int id) {
boardRepository.delete(id);
}
}웹 실행해서 글 삭제 테스트
- 삭제 버튼을 눌러 게시글 삭제 요청

- 삭제 후, 게시판으로 리다이렉트되었는지 확인
- 해당 게시글이 삭제되었는지 확인

Share article