본문 바로가기

BackEnd/Spring

[코드로 배우는 스프링 웹 프로젝트] java spring 책 삭제 기능 만들기

728x90
반응형

1. 책 삭제 기능 : http://localhost:8080/delete 주소로 책 정보 삭제 페이지 생성

 

2. 책 삭제 기능 쿼리 작성

   ▷ src/main/resources/sqlmap/book_SQL.xml

...(생략)...
	<!-- 책 삭제 기능 쿼리 작성 -->
	<delete id="delete" parameterType="hashMap">
		<![CDATA[
			delete from book 
			where
				book_id = #{bookId}		
		]]>
	</delete>
</mapper>


book_id 가 같으면 해당 숫자는 삭제합니다.


◎ MySQL 의 코드는 아래와 같이 사용할 수 있음

DELETE FROM book where book_id = 1;

 

 

3. 책 삭제 기능 DAO 메소드 작성

   ▷ src/main/java/sample/spring/yse/BookDao.java

...(생략)...
	//책 삭제 기능 DAO 메소드 작성
	public int delete(Map<String, Object> map){
		return this.sqlSessionTemplate.delete("book.delete", map);
	}	
}

 

 

4. 책 삭제 기능 서비스 클래스 메소드 생성

   ▷ src/main/java/sample/spring/yse/BookServiceImpl.java

...(생략)...
	@Override
	public boolean remove(Map<String, Object> map){
		int affectRowCount = this.bookDao.delete(map);
		return affectRowCount == 1;
	}
}

 

 

5. 책 삭제 기능 서비스 인터페이스 메소드 시그니쳐 생성

   ▷ src/main/java/sample/spring/yse/BookService.java

boolean remove(Map<String, Object> map);


인터페이스에 위의 코드 추가

 

 

6. 책 삭제 기능 컨트롤러 메소드 추가

   ▷ src/main/java/sample/spring/yse/BookController.java

...(생략)...
	// 책 삭제 기능 컨트롤러 메소드 추가
	@RequestMapping(value = "/delete", method=RequestMethod.POST)
	public ModelAndView deletePost(@RequestParam Map<String, Object> map) {
		ModelAndView mav = new ModelAndView();
		
		boolean isDeleteSuccess = this.bookService.remove(map);
		if(isDeleteSuccess) {
			mav.setViewName("redirect:/list");
		} else {
			String bookId = map.get("bookId").toString();
			mav.setViewName("redirect:/detail?bookId=" + bookId);
		}
		return mav;
	}
}


▷ 삭제 성공했으면 상세 페이지가 없으므로 목록으로 리다이렉트합니다.
삭제 실패했을시 다시 상세 페이지로 이동합니다.

 

7. 출력 화면(http://localhost:8080/detail?bookId=1)


삭제를 누르면 localhost:8080/list 페이지로 전환되며 404에러가 나타납니다.

이후 다시 http://localhost:8080/detail?bookId=1 링크로 들어가면 빈 화면이 나타납니다.

 

detail 상세화면에 들어가면 책 내용을 삭제할 수 있는 버튼이 나타납니다!

 

BookId를 기준으로 했기 때문에 해당 번호에 저장된 페이지를 삭제할 수 있고 별도의 삭제 페이지는 만들지 않아도 되네요!

 

다음은 책 목록을 만들어 볼게요!!

 

많은 분들의 피드백은 언제나 환영합니다!  많은 댓글 부탁드려요~~

 

728x90
반응형