Mybatis JAVA API (DAO 클래스 구현)
결론적으로 말하자면 SqlSession 객체가 필요하다!
그렇다면 어떻게 얻을까?
다음과 같은 순서이다
(1) SqlsessionFactoryBuilder의 build() 메소드 ->(2) SqlsessionFactory ->(3) SqlSession
(1)과정을 통해 SqlsessionFactory 객체를 얻는다
이때! build() 메소드의 매개변수로 sql-map-config.xml 즉, Mybatis 설정파일을 넣어줘야한다
(2)과정을 통해 Sqlsession 객체를 얻는다.
하지만 이모든과정을 개발자가 직접 코드를 작성하는것보다 마이바티스에서 제공하는걸 쓰는게 편하다
bean으로 설정하면되겠다.
bean으로 설정할때는 SqlsessionFactoryBean을 이용하면 SqlSession을 얻을수있다
(root-context.xml내용에 등록한다)
SqlSessionFactoryBean에는 setter주입하였고
SqlSessionTemplate에는 setter가없기에 생성자 주입이되었다
DAO부분에서
@Autowired
private SqlSessionTemplate mybatis; 라고 쓰면 bean에서 생성된 객체가 해당타입이 주입된다.
그리고 insert,update,delete ... 에
mybatis.insert(쿼리파일,vo);
mybatis.update(쿼리파일,vo);
mybatis.delete(쿼리파일,vo);
mybatis.selectOne(쿼리파일,vo); <-형변환 필요
mybatis.selectList(쿼리파일,vo); <-List타입
이런식으로 작성하면되고
서비스임플부분에서
다시 해당 DAO객체를 주입시켜서 사용하면된다
@Autowired
private BoardDAOMybatis boardDAO; 라고 쓰면 bean에서 생성된 객체가 해당타입이 주입된다.
서비스임플클래스는 bean등록을 안했지만
어노테이션 @Repository로인해 객체가 생성된다.