Web/SpringBoot

Mybatis Java Configuration for springboot ( mapper 사용 안하고)

벨포트조던 2019. 4. 10.
반응형

https://m.blog.naver.com/PostView.nhn?blogId=moonv11&logNo=220450831876&proxyReferer=https%3A%2F%2Fwww.google.com%2F

 

Mybatis Java Configuration

하도 삽질을 해서 정리해보았다. 굵은 글씨 부분에서 고생을 하였으니 염두하면서 보자. package com.moonv...

blog.naver.com

http://longbe00.blogspot.com/2015/03/mybatis-java-config.html

 

Mybatis java config 설정

MyBatisContext.java -        mapper 스캔처리 -        SqlSessionTemplate 설정 -        기타 설정 처리 package com.example.config; @Co...

longbe00.blogspot.com

 

package com.moonv.test.config.orm;

 

import javax.sql.DataSource;

 

import org.apache.ibatis.session.SqlSession;

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.support.PathMatchingResourcePatternResolver;

import org.springframework.jdbc.datasource.DataSourceTransactionManager;

import org.springframework.stereotype.Repository;

import org.springframework.transaction.PlatformTransactionManager;

/**

 * MyBatis 설정 클래스

 *

 */

@Configuration

@MapperScan(basePackages="com.moonv.test.**.persistence", 

sqlSessionFactoryRef="sqlSessionFactory", annotationClass=Repository.class)  

//Mapper.class가 아니라면 annotaionClass 를 지정해주자.

//'sqlSessionFactoryRef' 세팅을 해서 'Requested bean is currently in creation: Is there an unresolvable circular reference?' 메시지가 보이면서 순환참조 예외가 발생할 수 있다. 그럼 그냥 지워주면 된다.

 

public class MyBatisConfig {

/**

* 스프링이 트랜잭션을 관리할때 사용하는 트랜잭션매너져를 등록한다.

* @param dataSource DataSourceConfig.class 로부터 주입받은 bean

* @return

*/

@Bean

public PlatformTransactionManager transactionManager(DataSource dataSource){

return new DataSourceTransactionManager(dataSource);

}

 

/**

* mybatis SqlSessionFactory 생성한다.

* @param dataSource DataSourceConfig.class 로부터 주입받은 bean

* @return

* @throws Exception

*/

@Bean

public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception{

SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();

        sqlSessionFactoryBean.setDataSource(dataSource);

        //sqlSessionFactoryBean.setConfigLocation(new ClassPathResource("dbms/mybatis-config.xml"));

        sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver()

.getResources("classpath*:com/moonv/test/**/persistence/*.xml"));

 

/*

//applicationContext 로 세팅하는 방법

sqlSessionFactoryBean.setMapperLocations(applicationContext.getResources("classpath*:com/moonv/test/**/persistence/*.xml"));

*/

        return sqlSessionFactoryBean.getObject();

}

/**

* SqlSession 생성

* @param sqlSessionFactory 바로 위에 선언한 sqlSessionFactory 빈. 한 메소드에서 여러 개의 파라미터를 주입받을 수 있다.

* @return SqlSession

* @throws Exception

*/

@Bean(name="sqlSession")

public SqlSession sqlSession(SqlSessionFactory sqlSessionFactory) throws Exception{

SqlSession sqlSession = new SqlSessionTemplate(sqlSessionFactory);

return sqlSession;

}

}

반응형

댓글