一:添加依赖
注意这里我是用的Mybatis-plus,如果不是在下面的Configuration里会有些许不同;
<!-- 数据库依赖 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</exclusion>
</exclusions>
</dependency>
二:添加配置文件
三:写Configuation
package com.cmskscy.bizpay.config;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
import org.apache.ibatis.session.SqlSessionFactory;
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.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.cmskscy.bizpay.mapper.merchant", sqlSessionTemplateRef = "merchantFactory")
public class MerchantDatasourceConfig {
/**
* 创建数据源
*/
@Primary
@Bean(name = "merchantDatasource")
@ConfigurationProperties("spring.datasource.merchant")
public DataSource merchantDatasource() {
return DruidDataSourceBuilder.create().build();
}
/**
* 创建SessionFactory
*/
@Primary
@Bean(name = "merchantDataSourceFactory")
public SqlSessionFactory sqlSessionFactoryBean(@Qualifier("merchantDatasource") DataSource dataSource) throws Exception {
// 用的Mybatis-plus这里是使用MybatisSqlSessionFactoryBean,而Mybatis直接使用SqlSessionFactoryBean即可
MybatisSqlSessionFactoryBean sessionFactoryBean = new MybatisSqlSessionFactoryBean();
sessionFactoryBean.setDataSource(dataSource);
sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/merchant/*.xml"));
return sessionFactoryBean.getObject();
}
/**
* 创建SqlSessionTemplate
*/
@Bean(name = "merchantFactory")
public SqlSessionTemplate merchantSqlSessionTemplate(@Qualifier("merchantDataSourceFactory") SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
/**
* 创建事务管理器
*/
@Bean("merchantTransactionManger")
public DataSourceTransactionManager merchantTransactionManger(@Qualifier("merchantDatasource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
}
package com.cmskscy.bizpay.config;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
import org.apache.ibatis.session.SqlSessionFactory;
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.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource;
@Configuration
@MapperScan(basePackages = "com.cmskscy.bizpay.mapper.order", sqlSessionTemplateRef = "orderFactory")
public class OrderDatasourceConfig {
@Bean(name = "orderDatasource")
@ConfigurationProperties("spring.datasource.order")
public DataSource orderDatasource() {
return DruidDataSourceBuilder.create().build();
}
@Bean(name = "orderDataSourceFactory")
public SqlSessionFactory sqlSessionFactoryBean(@Qualifier("orderDatasource") DataSource dataSource) throws Exception {
// 用的Mybatis-plus这里是使用MybatisSqlSessionFactoryBean,而Mybatis直接使用SqlSessionFactoryBean即可
MybatisSqlSessionFactoryBean sessionFactoryBean = new MybatisSqlSessionFactoryBean();
sessionFactoryBean.setDataSource(dataSource);
sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/order/*.xml"));
return sessionFactoryBean.getObject();
}
/**
* 创建SqlSessionTemplate
*/
@Bean(name = "orderFactory")
public SqlSessionTemplate orderSqlSessionTemplate(@Qualifier("orderDataSourceFactory") SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
/**
* 创建事务管理器
*/
@Bean("orderTransactionManger")
public DataSourceTransactionManager orderTransactionManger(@Qualifier("orderDatasource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
}
package com.cmskscy.bizpay.config;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
import org.apache.ibatis.session.SqlSessionFactory;
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.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource;
@Configuration
@MapperScan(basePackages = "com.cmskscy.bizpay.mapper.reconciliation", sqlSessionTemplateRef = "reconciliationFactory")
public class ReconciliationDatasourceConfig {
@Bean(name = "reconciliationDatasource")
@ConfigurationProperties("spring.datasource.reconciliation")
public DataSource reconciliationDatasource() {
return DruidDataSourceBuilder.create().build();
}
@Bean(name = "reconciliationDataSourceFactory")
public SqlSessionFactory sqlSessionFactoryBean(@Qualifier("reconciliationDatasource") DataSource dataSource) throws Exception {
// 用的Mybatis-plus这里是使用MybatisSqlSessionFactoryBean,而Mybatis直接使用SqlSessionFactoryBean即可
MybatisSqlSessionFactoryBean sessionFactoryBean = new MybatisSqlSessionFactoryBean();
sessionFactoryBean.setDataSource(dataSource);
sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/reconciliation/*.xml"));
return sessionFactoryBean.getObject();
}
/**
* 创建SqlSessionTemplate
*/
@Bean(name = "reconciliationFactory")
public SqlSessionTemplate reconciliationSqlSessionTemplate(@Qualifier("reconciliationDataSourceFactory") SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
/**
* 创建事务管理器
*/
@Bean("reconciliationTransactionManger")
public DataSourceTransactionManager reconciliationTransactionManger(@Qualifier("reconciliationDatasource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
}
四:启动项目
正常写入业务代码就可以启动项目了,根据@MapperScan()的包路径会使用对应的数据源去数据库查询;
PS:在上面Configuration中的@MapperScan()对应包下一定要有文件才能启动项目,否则会报错;