마이바티스를 사용하여 db에 접속된 세션을 얻기 위해서는 


SqlSessionFactory 가 필요하다 


이거를 만드는 방법은 여러방식이 있는데 


SqlSessionFactoryBuilder를 이용해서 mybatis-config.xml을 가져와서 만드는 방법도 있지만 


XML 을 배척하는 JavaConfig를 선호함으로 다른 방식을 사용하겠다.


Mybatis-Spring  라이브러리를 사용하면


SqlSessionFactoryBean 이 있는데 

이 객체를 사용하면 mybatis-config.xml 파일 없이도

클린한 JavaConfig 를 구성할수있다.




import javax.sql.DataSource;

import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.type.BooleanTypeHandler;
import org.apache.ibatis.type.DateTypeHandler;
import org.apache.ibatis.type.TypeHandler;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

@Configuration
@MapperScan(value="org.prj.arachne.infrastructure.mapper")
public class MybatisConfiguration {

@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource)throws Exception{
SqlSessionFactoryBean sessionFactory=new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);

Resource[] res=new PathMatchingResourcePatternResolver()
.getResources("classpath:/mappers/*_mapper.xml");

//sessionFactory.setEnvironment("dev");

sessionFactory.setMapperLocations(res);
sessionFactory.setTypeAliasesPackage("org.prj.arachne.domain");
sessionFactory.setTypeHandlers(new TypeHandler[] {
new DateTypeHandler(),
new BooleanTypeHandler()
});


return sessionFactory.getObject();
}

/**
* 마이바티스 {@link org.apache.ibatis.session.SqlSession} 빈을 등록한다.
*
* SqlSessionTemplate은 SqlSession을 구현하고 코드에서 SqlSession를 대체하는 역할을 한다.
* 쓰레드에 안전하게 작성되었기 때문에 여러 DAO나 매퍼에서 공유 할 수 있다.
*/
@Bean
public SqlSessionTemplate sqlSession(SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}







}


  

@MapperScan : @Mapper 인터페이스들의 패키지 위치를 선언하는 설정이다.


sqlSessionFactoryBean 에서 


Datasource : 데이터베이스 접속을위한 계정, db드라이버, 비번 과 같은 정보들 

MapperLocation  : sql 들이 들어있는 xml 파일들의 위치를 지정한다


위 설정을 가지고 

userMapper.java(인터페이스) 와 user_mapper.xml 이렇게가 한쌍이되어서 

mybatis가 구현체를 알아서 생성해준다. 


TypeAliasesPackage : 디비에서 가져온 데이터들을 담을 자바 빈들이 모여있는 패키지 등록    쉽게말하면 MVC 패턴에서 Model에 해당하는 패키지를 등록하는 것이다.


추가 옵션 설정은 이렇게 해주면된다 

다양한 옵션들은 mybatis공식 사이트 들어가서 확인해보시기를 



Properties properties = new Properties();
properties.setProperty("mapUnderscoreToCamelCase", "true");
sessionFactory.setConfigurationProperties(properties);



'Programming > Mybatis' 카테고리의 다른 글

Mybatis Springboot TypeHandler 배포 에러  (0) 2018.06.27
SqlSessionFactory 와 Builder의 구분  (0) 2018.06.12
mybatis 핵심 기능 mapper.xml 부분  (0) 2017.03.13
Mybatis 에 대한 정리  (0) 2017.01.21

+ Recent posts