@Repository
public class BookDAO {
public List<BookVO> listBook(){
return DBManager.listBook();
}
public int insertBook(BookVO vo) {
return DBManager.insertBook(vo);
}
}
@Autowired 예시 @Autowired : 특정 객체에 대해 해당 어노테이션을 붙히면 자동으로 Bean으로 등록 한다.
Mybatis란
자바 객체와 데이터베이스 테이블을 맵핑을 해줌
VO를 이용한 getter/setter 작업을 덜어 줌.
DAO를 사용하기 대신에 xml 을 이용할 것임 (BookMapper.xml)
xml이 매핑 파일에 의해 관리될 것임 (sqlMapConfig.xml)
Spring / Mybatis 설정 or 동작 원리 / 순서
1. web.xml
기존과 동일하게 DispactcherServlet / HandlerMapping 을 동일하게 선언
SQL 문이 담긴 Mapper 1.1 실행 결과의 값이 담겨 있을 속성은 resultType --> select 시 필요 1.2 실행에 필요한 매개변수가 담길 속성 parameterType --> insert/update/delete 시 필요
namespace를 선언하는 게 좋음 (DB연동Config.xml 사용 될 것임)
아래 코드는 DBManager.java 에서
book.findAll(), book.inserBook(vo) 식으로 호출 될 것임
<mapper namespace="book">
<select id="findAll" resultType="bookVO">
select * from book order by bookid asc
</select>
<insert id="insertBook" parameterType="bookVO">
insert into book values(#{bookid}, #{bookname}, #{publisher}, #{price})
</insert>
</mapper>
6. controller
@Controller 클래스 선언
@Controller
DAO 객체 생성 ( 실제 객체는 xxx-servlet.xml 에서 선언 ) - byName, byType, contstruct
private BookDAO dao;
//예시는 setter에 의한 dao
public void setDao(BookDAO dao) {
this.dao = dao;
}
dao의 함수 실행 후 result ModelAndView 리턴
@RequestMapping(value="/xxx.do", method=RequestMethod.GET)
public ModelAndView nonono() {
ModelAndView mav = new ModelAndView();
return mav;
}
7. dao
@Repository 선언 필수
실제 DAO의 역할은 8번에서 할 것임
@Repository
DBManaer에서 함수 실행 결과 return (해당 함수 return만 있고 DBmanaer에서 실제 함수 정의)
public int insertBook(BookVO vo) {
return DBManager.insertBook(vo);
}
8. DBManager ( 일전의 DAO 역할을 하는 녀석 )
- 4번의 DB연동Config.xml 과 연동 필요
DB연동Config.xml 위치를 InputStream타입으로저장 (Resources.getResourceAsStream)
InputStream을 SqlSessionFactory 타입의 객체 생성후 Build(InputStream)
댓글