示例2个数据源resourcesA & resourcesB
# web port server.port=8102 # no web #spring.main.web-environment=false # log config logging.config=classpath:logback.xml spring.devtools.restart.exclude=static/**,public/** spring.devtools.restart.enabled=true #resourcesA spring.datasource.adas.resourcesA.minimum-idle=5 spring.datasource.adas.resourcesA.maximum-pool-size=10 spring.datasource.adas.resourcesA.idle-timeout=30000 spring.datasource.adas.resourcesA.connection-timeout=30000 spring.datasource.adas.resourcesA.ConnectionTestQuery=select 1 spring.datasource.adas.resourcesA.jdbcUrl=jdbc:postgresql://******此处是数据库链接 spring.datasource.adas.resourcesA.username=postgres spring.datasource.adas.resourcesA.password=password #resourcesB spring.datasource.empdata.resourcesB.minimum-idle=5 spring.datasource.empdata.resourcesB.maximum-pool-size=10 spring.datasource.empdata.resourcesB.idle-timeout=30000 spring.datasource.empdata.resourcesB.connection-timeout=30000 spring.datasource.empdata.resourcesB.ConnectionTestQuery=select 1 spring.datasource.empdata.resourcesB.jdbcUrl=jdbc:postgresql://***********此处是数据库链接 spring.datasource.empdata.resourcesB.username=postgres spring.datasource.empdata.resourcesB.password=passwordJAVA配置数据源 resourcesA
import javax.sql.DataSource;
import org.apache.ibatis.io.VFS;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.mybatis.spring.boot.autoconfigure.SpringBootVFS;
import org.springframework.beans.factory.annotation.Qualifier;
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.jdbc.datasource.DataSourceTransactionManager;
import com.zaxxer.hikari.HikariDataSource;
@Configuration
@MapperScan(
//此处是对应的mapper包 @bean的name属性是自定义的
basePackages = {"com.*.job.executor.mapper.resourcesA"},
sqlSessionFactoryRef = "adasSqlSessionFactory"
)
public class resourcesAConfig{
@Bean(name = "resourcesA")
@ConfigurationProperties(prefix = "spring.datasource.adas.resourcesA")
public DataSource dataSource() {
return new HikariDataSource();
}
@Bean(name = "resourcesATransactionManager")
public DataSourceTransactionManager resourcesATransactionManager() {
return new DataSourceTransactionManager(dataSource());
}
@Bean(name = "resourcesASqlSessionFactory")
public SqlSessionFactory resourcesASqlSessionFactory(@Qualifier("resourcesA") DataSource dataSource)
throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
VFS.addImplClass(SpringBootVFS.class);
return sessionFactory.getObject();
}
}
resourcesB
import javax.sql.DataSource;
import org.apache.ibatis.io.VFS;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.mybatis.spring.boot.autoconfigure.SpringBootVFS;
import org.springframework.beans.factory.annotation.Qualifier;
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.jdbc.datasource.DataSourceTransactionManager;
import com.zaxxer.hikari.HikariDataSource;
@Configuration
@MapperScan(
//此处是对应的mapper包 @bean的name属性是自定义的
basePackages = {"com.*.*.*.mapper.empdata"},
sqlSessionFactoryRef = "empSqlSessionFactory"
)
public class ResourcesBConfig {
@Bean(name = "resourcesBSource")
@ConfigurationProperties(prefix = "spring.datasource.empdata.resourcesB")
public DataSource dataSource() {
return new HikariDataSource();
}
@Bean(name = "eresourcesBTransactionManager")
public DataSourceTransactionManager resourcesBTransactionManager() {
return new DataSourceTransactionManager(dataSource());
}
@Bean(name = "resourcesBSqlSessionFactory")
public SqlSessionFactory resourcesBSqlSessionFactory(@Qualifier("resourcesBSource") DataSource dataSource)
throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
VFS.addImplClass(SpringBootVFS.class);
return sessionFactory.getObject();
}
}
总结
不同的数据源对应不同的mapper层,就可以无缝衔接多个数据源了。



