본문 바로가기

BackEnd/Spring

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

728x90
반응형

1. 책 수정 기능 : http://localhost:8080/update?bookId=1 에서 저장 버튼 클릭시 책 정보 갱신

 

2. 책 수정 기능 쿼리 작성

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

...(생략)...
	<!-- 책 수정 쿼리 작성 -->
	<update id="update" parameterType="hashMap">
		<![CDATA[
			update book set 
				title = #{title},
				category = #{category},
				price = #{price}
			where
				book_id = #{bookId}		
		]]>
	</update>
</mapper>


update를 통해서 title, category, price 값들을 변경합니다.


◎ MySQL에서는 아래의 코드를 사용한 것과 동일합니다.

UPDATE book set title='제목', category='IT', price=10000 where book_id = 1;

 

 

3. 책 수정 기능 DAO 메소드 작성

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

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

 

 

4. 책 수정 기능 서비스 클래스 메소드 생성

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

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

 

 

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

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

boolean edit(Map<String, Object> map);​


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

 

 

6. 책 수정 기능 컨트롤러 메소드 추가

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

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

 

 

7. 책 수정 기능 확인

   ▷localhost:8080/update?bookId=1


위와 같은 수정페이지가 나타나고 제목을 '이것이 자바다' → '스프링 MVC'로 수정하면 아래와 같은 화면이 나타납니다.


 

이번에는 책 수정 페이지에서 저장을 누르면 책 상세 페이지에 업데이트가 되는 것을 확인할 수 있는 화면이 나타납니다!

 

BookId를 기준으로 했기 때문에 해당 번호에 저장된 페이지를 수정할 수 있네요!!

 

다음은 책 삭제 기능을 만들어 볼게요!!

 

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

 

728x90
반응형