PostIT

[Java/자바]Spring에서 Java로 Mybatis연동 본문

Spring/Config

[Java/자바]Spring에서 Java로 Mybatis연동

shun10114 2016. 9. 9. 23:49

# Spring에서 Java로 Mybatis연동


Spring Boot를 사용해보면서, Boot App으로 켜지는 것을 보고 Xml로 설정하지 않고,

자바로 설정하면 어떠해볼지 생각해봤다. 사람들이 Xml로 설정하는데에는 그만한 이유가 있을 것이라고 생각했지만,

자바로 구현하고 싶은 마음에 구현했다. 그러나, 실행해보니 의존성(?)이 너무 강하다는 것을 느꼈다.

Java에서는 변경이 되면 프로젝트 전체를 다시 스캔한다. 개인적으로 xml에 비해 이부분이 상당히 불편하게 느껴졌다

그럼에도 불구하고, Java로 Mybatis연동을 성공했다.

환경 : 
Mac OS 10.11.6
Java 1.8
STS(Spring)a
Tomcat
Mybatis

<!-- MyBatis -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-jdbc</artifactId>

</dependency>

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis</artifactId>

<version>3.3.0</version>

</dependency>

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis-spring</artifactId>

<version>1.2.3</version>

</dependency>

package com.shun.blog.mybatis;

import javax.sql.DataSource;

import org.apache.ibatis.session.SqlSessionFactory;
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.jdbc.datasource.SimpleDriverDataSource;

@Configuration
@MapperScan(basePackages="com.shun.blog", 
sqlSessionFactoryRef="dataSource", 
sqlSessionTemplateRef="sqlSessionFactoryBean")
public class DataConfig {
@Bean(name="dataSource")
public SimpleDriverDataSource dataSource() { 
SimpleDriverDataSource dataSource = new SimpleDriverDataSource();
dataSource.setDriverClass(com.mysql.jdbc.Driver.class);
dataSource.setUsername("username");
dataSource.setUrl("jdbc:mysql://localhost:3306/(dataBase)?useSSL=false&amp;autoReconnect=true");
dataSource.setPassword("(Password)");
return dataSource;
}

@Bean
public DataSourceTransactionManager transactionManager() {
return new DataSourceTransactionManager(dataSource());
}

@Bean(name="sqlSessionFactory")
public SqlSessionFactoryBean sqlSessionFactoryBean() throws Exception {
SqlSessionFactoryBean sqlSessionFactory = new SqlSessionFactoryBean();
sqlSessionFactory.setDataSource(dataSource());
sqlSessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));
return sqlSessionFactory;
}

@Bean(name="sqlSessionTemplate")
public SqlSessionTemplate sqlSession(SqlSessionFactory sqlSessionFactory){
return new SqlSessionTemplate(sqlSessionFactory);
}
}



Comments