import com.alibaba.druid.pool.DruidDataSource;
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.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import tk.mybatis.spring.annotation.MapperScan;
import javax.sql.DataSource;
/**
* 数据源初始化
*
*/
@Configuration
@MapperScan(basePackages = {"com.xxxx.xxx.dds.mapper"},
sqlSessionTemplateRef = "sqlSessionTemplateDdsDataSource",markerInterface = BaseMapper.class)
public class DdsDataSourceConfig {
/**
* 自动读取DataSource配置文件
*
* @return
*/
@Primary
@Bean(name = "ddsProperties")
@ConfigurationProperties("spring.datasource.master")
public DataSourceProperties ddsProperties() {
return new DataSourceProperties();
}
/**
* 添加@Primary注解,设置默认数据源,事务管理器
*
* @return
*/
@Primary
@Bean(name = "ddsDataSource")
public DataSource ddsDataSource(@Qualifier("ddsProperties") DataSourceProperties properties) {
DataSource dataSource = properties.initializeDataSourceBuilder()
.type(DruidDataSource.class).build();
return dataSource;
}
@Primary
@Bean(name = "sqlSessionFactoryDdsDataSource")
public SqlSessionFactory sqlSessionFactoryDdsDataSource(
@Qualifier("ddsDataSource") DataSource ddsDataSource) throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
configuration.setMapUnderscoreToCamelCase(true);
factoryBean.setConfiguration(configuration);
// 使用ddsDataSource数据源, 连接ddsDataSource库
factoryBean.setDataSource(ddsDataSource);
//下边两句仅仅用于*.xml文件,如果整个持久层操作不需要使用到xml文件的话(只用注解就可以搞定),则不加
//指定entity和mapper。xml的路径
factoryBean.setTypeAliasesPackage("com.xxx.xxx.dds.entity");
factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mappers/*Mapper.xml"));
return factoryBean.getObject();
}
@Primary
@Bean("sqlSessionTemplateDdsDataSource")
public SqlSessionTemplate sqlSessionTemplateDdsDataSource(
@Qualifier("sqlSessionFactoryDdsDataSource") SqlSessionFactory sqlSessionFactoryDdsDataSource) throws Exception {
//使用注解中配置的Factory
SqlSessionTemplate template = new SqlSessionTemplate(sqlSessionFactoryDdsDataSource);
return template;
}
}
import com.alibaba.druid.pool.DruidDataSource;
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.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import tk.mybatis.spring.annotation.MapperScan;
import javax.sql.DataSource;
@Configuration
@MapperScan(basePackages = {"com.xxxx.xxx.dds.mapper.master"},
sqlSessionTemplateRef = "sqlSessionTemplateMasterDataSource",markerInterface = BaseMasterMapper.class)
public class MasterVehicleDataSourceConfig {
/**
* 自动读取DataSource配置文件
* @return
*/
@Bean(name = "masterProperties")
@ConfigurationProperties("spring.datasource.master.vehicle")
public DataSourceProperties masterProperties() {
return new DataSourceProperties();
}
@Bean(name = "masterDataSource")
public DataSource masterDataSource(@Qualifier("masterProperties") DataSourceProperties properties) {
DataSource dataSource = properties.initializeDataSourceBuilder()
.type(DruidDataSource.class).build();
return dataSource;
}
@Bean(name = "sqlSessionFactoryMasterDataSource")
public SqlSessionFactory sqlSessionFactoryMasterDataSource(
@Qualifier("masterDataSource")DataSource masterDataSource) throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
configuration.setMapUnderscoreToCamelCase(true);
factoryBean.setConfiguration(configuration);
// 使用masterDataSource数据源, 连接masterDataSource库
factoryBean.setDataSource(masterDataSource);
//下边两句仅仅用于*.xml文件,如果整个持久层操作不需要使用到xml文件的话(只用注解就可以搞定),则不加
factoryBean.setTypeAliasesPackage("com.xxx.xxx.dds.entity.master");
factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mappers/master/*Mapper.xml"));
return factoryBean.getObject();
}
@Bean("sqlSessionTemplateMasterDataSource")
public SqlSessionTemplate sqlSessionTemplateMasterDataSource(
@Qualifier("sqlSessionFactoryMasterDataSource") SqlSessionFactory sqlSessionFactoryMasterDataSource) throws Exception {
SqlSessionTemplate template = new SqlSessionTemplate(sqlSessionFactoryMasterDataSource);
return template;
}
}
tkMybatis多数据源配置
最新推荐文章于 2024-06-30 04:33:22 发布