Skip to content

Instantly share code, notes, and snippets.

@jaimemin
Created March 24, 2023 16:09
package com.tistory.jaimemin.multidatasourcemybatis.multitenancy.config;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
@Configuration
public class MasterDatabaseConfig {
@Bean
@ConfigurationProperties("spring.datasource.master")
public DataSourceProperties masterDataSourceProperties() {
return new DataSourceProperties();
}
@Bean(name = "masterDataSource")
public DataSource masterDataSource() {
return masterDataSourceProperties()
.initializeDataSourceBuilder()
.build();
}
@Bean(name = "masterSqlSessionFactory")
public SqlSessionFactory masterSessionFactoryBean(@Qualifier("masterDataSource") DataSource dataSource
, ApplicationContext applicationContext) throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSource);
factoryBean.setConfigLocation(applicationContext.getResource("classpath:mybatis/mybatis-config.xml"));
factoryBean.setMapperLocations(applicationContext.getResources("classpath*:mapper/master/*.xml"));
return factoryBean.getObject();
}
@Bean(name = "masterSqlSession")
public SqlSession masterSqlSession(@Qualifier("masterSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment