개발/spring

Mybatis JAVA API (DAO 클래스 구현)

나태쿤 2021. 2. 12. 21:09
728x90

결론적으로 말하자면 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로인해 객체가 생성된다.

728x90