Spring连接不同的数据库配置多个数据源,指定Mybatis的xml映射对应的库与表
配置文件中配置多个数据源
# SqlServer
spring.datasource.master.jdbc-url=jdbc:sqlserver://127.0.0.1:1433;DatabaseName=LSDataDB
spring.datasource.master.username=root
spring.datasource.master.password=root
spring.datasource.master.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
# Mysql
spring.datasource.slave.jdbc-url=jdbc:mysql://127.0.0.1:3306/pre_xmjg_310000?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&allowMultiQueries=true
spring.datasource.slave.username=root
spring.datasource.slave.password=root
spring.datasource.slave.driver-class-name=com.mysql.jdbc.Driver
代码实现
/**
* @author liangjunfei
* 指定数据源以及映射实体类与Mybatis xml路径
*/
@Configuration // 定义配置类
@MapperScan(basePackages = "com.datamanager.dao.testDao" ,sqlSessionTemplateRef = "fgjSqlSessionTemplate") // 指定映射实体类路径
public class FgjDatasourceConfig {
/**
* 读取配置文件数据源并配置
* @return
*/
@Bean(name = "fgjDatasource")
@ConfigurationProperties(prefix = "spring.datasource.fgj")
public DataSource fgjDatasource(){
return DataSourceBuilder.create().build();
}
/**
* 配置session工厂
* @param dataSource
* @return
* @throws Exception
*/
@Bean(name = "fgjSqlSessionFactory")
public SqlSessionFactory fgjSqlSessionFactory(@Qualifier("fgjDatasource") DataSource dataSource)throws Exception{
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
return bean.getObject();
}
/**
* 配置事务管理器
* @param dataSource
* @return
*/
@Bean(name = "fgjTransactionManger")
public DataSourceTransactionManager fgjTransactionManger(@Qualifier("fgjDatasource") DataSource dataSource){
return new DataSourceTransactionManager(dataSource);
}
/**
* 模版
* @param sqlSessionFactory
* @return
* @throws Exception
*/
@Bean(name = "fgjSqlSessionTemplate")
public SqlSessionTemplate fgjSqlSessionTemplate(@Qualifier("fgjSqlSessionFactory") SqlSessionFactory sqlSessionFactory)throws Exception{
return new SqlSessionTemplate(sqlSessionFactory);
}
}