一、application.yml 配置
数据源1 取名sys; 数据源2 取名oa
二、配置类:二个配置文件数据源1配置为SysDataSourceConfig 数据源2配置为OaDataSourceConfig
package com.deft.web.admin.conf;
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
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.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
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 org.springframework.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource;
//com.hccake.ballcat.system.mapper
@Configuration
//basePackages配置sys数据源的mapper文件目录
@MapperScan(basePackages = "com.base.test.mapper.sys", sqlSessionTemplateRef = "sysSqlSessionTemplate")
public class SysDataSourceConfig {
@Bean(name = "sysDataSource")
@ConfigurationProperties(prefix = "spring.datasource.sys")//指向yml配置文件中的数据库配置
@Primary //主库加这个注解,修改优先权,表示发现相同类型bean,优先使用该方法。
public DataSource sysDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "sysSqlSessionFactory")
@Primary
public SqlSessionFactory sysSqlSessionFactory() throws Exception {
MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean ();
bean.setDataSource(sysDataSource());
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:/mapper/**/*Mapper.xml"));
//这个的getResources指向的是你的mapper.xml文件,相当于在yml中配置的mapper-locations,此处配置了yml中就不用配置,或者说不会读取yml中的该配置。
return bean.getObject();
}
@Bean(name = "sysTransactionManager")
@Primary
public DataSourceTransactionManager sysTransactionManager() {
return new DataSourceTransactionManager(sysDataSource());
}
@Bean(name = "sysSqlSessionTemplate")
@Primary
public SqlSessionTemplate sysSqlSessionTemplate() throws Exception {
return new SqlSessionTemplate(sysSqlSessionFactory());
}
}
package com.deft.web.admin.conf;
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
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.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
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 org.springframework.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource;
@Configuration
@MapperScan(basePackages = "com.base.test.mapper.oa", sqlSessionTemplateRef = "oaSqlSessionTemplate")
public class OaDataSourceConfig {
@Bean(name = "oaDataSource")
@ConfigurationProperties(prefix = "spring.datasource.oa")//指向yml配置文件中的数据库配置
// @Primary //主库加这个注解,修改优先权,表示发现相同类型bean,优先使用该方法。
public DataSource oaDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "oaSqlSessionFactory")
// @Primary
public SqlSessionFactory oaSqlSessionFactory(@Qualifier("oaDataSource") DataSource dataSource) throws Exception {
MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();
bean.setDataSource(dataSource);
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:/mapper/**/*Mapper.xml"));
//这个的getResources指向的是你的mapper.xml文件,相当于在yml中配置的mapper-locations,此处配置了yml中就不用配置,或者说不会读取yml中的该配置。
return bean.getObject();
}
@Bean(name = "oaTransactionManager")
// @Primary
public DataSourceTransactionManager oaTransactionManager() {
return new DataSourceTransactionManager(oaDataSource());
}
@Bean(name = "oaSqlSessionTemplate")
// @Primary
public SqlSessionTemplate oaSqlSessionTemplate(@Qualifier("oaSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}