Spring & Spring Boot

[ Spring-Boot ] Mybatis DB 커넥션 설정하기

사과씨앗 2021. 5. 19. 18:20
728x90
반응형

안녕하세요 이번 글에서는 Mybatis를 사용하기 위해 DB 커넥션 설정을 해보겠습니다.

 

먼저 아래 디펜던시가 있는지 확인하여 줍시다! ( Boot 프로젝트 생성 시 넣어주면 들어 있습니다. )

    <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.4</version>
        </dependency>

 

그다음 application.properties 파일에 아래와 같이 작성하여 줍시다. 

( 작성자는 mariaDB 기준으로 작성하였습니다. 본인에 환경에 맞게 구성해 주세요 ^^  )

spring.datasource.driverClassName = org.mariadb.jdbc.Driver
spring.datasource.jdbc-url= jdbc:mariadb://localhost:3306/example
spring.datasource.username=root
spring.datasource.password=example

 

프로퍼티 파일에 작성한 설정들을 사용하기 위해 DatabaseConfiguration 클래스를 생성하여 줍시다.

 

@Configuration
public class DatabaseConfiguration {


    @Bean
    @ConfigurationProperties(prefix = "spring.datasource") // 해당 Bean 이 생성 되면서 해당 프로퍼티에 대한 값을 가져와 사용한다.
    public DataSource dataSource(){
        return DataSourceBuilder.create().build();
    }

}

 

SqlSessionFactory , SqlSessionTemplate를 만들어 주기 위해 MybatisConfiguration 클래스를 생성하여 줍시다.

 

@Configuration
/**
 * @Mapper(애너테이션)을 이용하여 Mapper Interface를 스프링 빈으로 주입받아 DB에 접근하는 방법
 */
@MapperScan(basePackages = "kr.co.song.spring.mvc.repository") //해당 패키지를 스캔
public class MybatisConfiguration {



    @Bean
    public SqlSessionFactory sqlSessionFactory(@Autowired DataSource dataSource, ApplicationContext applicationContext) throws Exception{
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean(); //팩토리 빈 생성
        factoryBean.setDataSource(dataSource); //미리 만들어 놓은 DataSource 빈을 주입하여 넣어준다.
        factoryBean.setMapperLocations(applicationContext.getResources("classpath:mybatis/sql/*.xml")); //쿼리 실행을 위해 만들어 놓은 해당 위치의 xml 파일을 맵퍼로 설정
        SqlSessionFactory factory = factoryBean.getObject();
        factory.getConfiguration().setMapUnderscoreToCamelCase(true);
        return factoryBean.getObject();
    }

    @Bean
    public SqlSessionTemplate sqlSessionTemplate(@Autowired SqlSessionFactory sqlSessionFactory) {
        return new SqlSessionTemplate(sqlSessionFactory); //sqlSessionTemplate 에 만들어 놓은 팩토리 주입
    }
}

 

 

위 코드까지 작성해요 준 다음 디렉터리 구조를 아래처럼 만들어 주시면 됩니다.

 

 

감사합니다 ^^ 

728x90
반응형