controller
//삭제
// <form method="post" action="/delete">
@RequestMapping(value = "/delete" , method = RequestMethod.POST)
public ModelAndView deletePost(@RequestParam Map<String,Object> map,
ModelAndView mav) {
//map : {bookId=3}
boolean isDeleteSuccess = this.bookService.delete(map);
if(isDeleteSuccess) { //성공
//목록 화면으로 redirect(요청흐름을 이동시킴. 단, 데이터는 이동 못함)
mav.setViewName("redirect:/list?id=aa");
}else {//실패
//상세 화면으로 redirect
mav.setViewName("redirect:/detail?bookId="+map.get("bookId").toString());
}
return mav;
}
sql.xml
<!-- 책 삭제 -->
<delete id="delete" parameterType="hashMap">
delete from book
where book_id = #{bookId}
</delete>
dao
//책 삭제
public boolean delete(Map<String,Object> map) {
//RDBMS(Relational DataBase Management System) : 관계형 dbms
//delete 구문은 update 구문처럼 where 조건에 일치하는
//모든 행을 삭제하므로 영향을 받은 행의 수는 0 혹은 1이상이 됨
int result = this.sqlSessionTemplate.delete("book.delete", map);
//result > 0 는 삭제가 잘 되었다는 의미
return result > 0;
}
serviceImpl
//책 삭제
@Override
public boolean delete(Map<String,Object> map) {
return this.bookDao.delete(map);
}
service
//book 삭제
public boolean delete(Map<String,Object> map);
detail.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!--
BookVO
[bookId=3, title=해리포터, category=소설, price=15000, insertDate=2022-01-28 11:21:37.0]
BookController에서 mav 객체에 data라는 이름으로 select검색 결과를 넣었으므로...
mav.addObject("data",bookVO)
달러{data.title} 형식으로 사용하면 됨 {vo, 멤버변수}
-->
<!DOCTYPE html>
<html>
<head>
<title>책 상세</title>
</head>
<body>
<h1>책 상세</h1>
<p>제목 : ${data.title}</p>a
<p>카테고리 : ${data.category}</p>
<p>가격 : ${data.price}</p>
<p>입력일 : ${data.insertDate}</p>
<p><a href="/update?bookId=${data.bookId}">수정</a></p>
<p><a href="/list">목록으로</a>
<form method="post" action="/delete">
<input type="hidden" name="bookId" value="${data.bookId}" />
<input type="submit" value="삭제" />
</form>
</body>
</html>