스프링 MVC 하루만에 배우기 구판

09.01. 책 수정 기능 만들기 - 1

연서은 2024. 9. 25. 11:28

9. 책 수정 기능 만들기

9.1. 책 수정 기능 개요

책 수정을 위한 기능을 만든다.
책 수정 화면 /update?bookId=1 에서 저장 버튼을 클릭할 경우 기존 책의 정보를 갱신한다.

9.2. 책 수정 기능 쿼리 작성

책 상세 화면을 수정하는 쿼리를 작성한다.
데이터베이스에서 데이터를 수정하는 쿼리는 UPDATE다. 이렇게 사용한다.

UPDATE 테이블명 SET 컬럼들 where 조건  

책 하나를 수정하기 위한 쿼리는 다음과 같다.

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

수정 쿼리를 작성한다.
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>  

<update 태그는 수정(UPDATE) 쿼리를 실행하기 위한 마이바티스 태그다.

 
<update  

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

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

public int update(Map<String, Object> map) {  
return this.sqlSessionTemplate.update("book.update", map);  
}  

sqlSessionTemplate 객체의 update 메소드는 insert 메소드와 사용법이 동일하다. 첫번째 파라미터는 쿼리ID, 두번째 파라미터는 쿼리 파라미터이며 반환값은 영향받은 행 수이다.

9.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;  

}  

수정의 경우 입력과는 다르게 PK를 가져오거나 하는 절차가 필요없으므로 그저 1개의 행이 제대로 영향받았는지만 검사하면 된다.

return affectRowCount == 1;