컨트롤러를 생성합니다. 다음과 같이 com.edu.springboot.MainController.java 파일에 코드를 추가합니다.
// 삭제 : request 내장객체를 통해 폼값 받음
@PostMapping("/delete.do")
public String boardDeletePost(HttpServletRequest req) {
int result = dao.delete(req.getParameter("idx"));
System.out.println("글삭제결과 : " + result);
// 삭제가 완료되면 목록으로 이동한다.
return "redirect:list.do";
}
인터페이스를 생성합니다. 다음과 같이 com.edu.springboot.jdbc.IBoardService.java 파일에 코드를 추가합니다.
package com.edu.springboot.jdbc;
import java.util.ArrayList;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/* Controller와 Mybatis Mapper 사이에서 매개역할을 하는 인터페이스로 @Mapper 어노테이션을 부착한다.
* 컨트롤러는 인터페이스의 추상메서드를 호출하고, 이를 통해 Mapper의 특정 엘리먼트가 호출되어 쿼리문이 실행되는 구조를 가지게 된다. */
@Mapper
public interface IBoardService {
// 목록 : 게시물의 개수를 카운트(커맨드 객체 사용)
public int getTotalCount(ParameterDTO parameterDTO);
// 목록 : 한 페이지에 출력할 게시물을 인출하여 반환(커맨드 객체 사용)
public ArrayList<BoardDTO> listPage(ParameterDTO parameterDTO);
/* 작성 : 폼 값을 받은 후 어노테이션으로 통해 이름을 변경하여 Mapper로 전달
* Mapper에서는 변경된 이름을 통해 인파라미터를 설정한다. */
public int write(@Param("_name") String name, @Param("_title") String title, @Param("_content") String content);
// 열람(커맨드 객체 사용)
public BoardDTO view(BoardDTO boardDTO);
// 수정(커맨드 객체 사용)
public int edit(BoardDTO boardDTO);
// 삭제
public int delete(String idx);
}
매퍼를 생성합니다. 다음과 같이 resources/mapper/BoardDAO.xml 파일에 코드를 추가합니다.
<!-- 삭제 : parameterType을 별도로 명시하지 않는 경우에는 파라미터의 순서대로 param1,2,.. 와 같이 인파라미터를 설정할 수 있다. -->
<delete id="delete">
DELETE FROM member WHERE idx=#{param1}
</delete>
뷰를 생성합니다. 다음과 같이 webapp/WEB-INF/views/view.jsp 파일에 코드를 추가합니다.
<script>
function deletePost(idx) {
if (confirm("정말로 삭제하시겠습니까?")) {
var form = document.writeFrm;
form.method = "post";
form.action = "delete.do";
form.submit();
}
}
</script>
이제 게시물을 삭제할 수 있습니다.
다음과 같이 실행됩니다.

게시물의 '삭제하기' 버튼을 클릭하면 '정말로 삭제하시겠습니까?' 라는 알림창이 뜹니다.

'확인' 버튼을 클릭하면 게시물이 삭제된 후 게시물 목록 페이지로 이동합니다. 목록에서 게시물 정상적으로 삭제되었음을 확인할 수 있습니다.

게시물 삭제 기능이 성공적으로 구현되었습니다.