application.yml配置
spring.datasource.primary.url=jdbc:mysql://192.168.10.109:3306/demo spring.datasource.primary.username=root spring.datasource.primary.password=123 spring.datasource.primary.driver-class-name=com.mysql.jdbc.Driver spring.datasource.minor.url=jdbc:mysql://192.168.10.109:3306/demo spring.datasource.minor.username=root spring.datasource.minor.password=123 spring.datasource.minor.driver-class-name=com.mysql.jdbc.Driver
主数据源 文件配置
import com.quipoo.mybatis.page.PageHelpInterceptor; import org.apache.ibatis.plugin.Interceptor; 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.autoconfigure.jdbc.DataSourceBuilder; 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; import java.util.Properties; /** * mybatis多数据源的配置 * 在主数据源的注解上要加上 @primary注解 * 首先 要先创建datasource * 然后 创建sqlSessionFactory -->需要DataSource数据源注入 --》还要映射主数据源的mapper.xml文件 多个数据源时要分开放在不同的文件夹里 * 然后 创建DataSourceTransactionManger 进行事务的管理 --》需要注入DataSource * 然后 创建SQLSessionTemplate --》使用这个模板来调用数据库 --》需要注入SQLSessionFactory */ @Configuration @MapperScan(basePackages = "com.quipoo.mybatis.primaryMapper",sqlSessionTemplateRef = "primarySqlSessionTemplate") public class PrimaryDataSourceConfig { @Bean(name = "primaryDataSource") @ConfigurationProperties(prefix = "spring.datasource.primary") @Primary public DataSource dataSource() { return DataSourceBuilder.create().build(); } @Bean(name = "primarySqlSessionFactory") @Primary public SqlSessionFactory sqlSessionFactory(@Qualifier("primaryDataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:/mybatis1/*.xml")); Properties properties = new Properties(); properties.setProperty("dialect","mysql"); PageHelpInterceptor pageHelpInterceptor = new PageHelpInterceptor(); pageHelpInterceptor.setProperties(properties); bean.setPlugins(new Interceptor[]{pageHelpInterceptor}); return bean.getObject(); } @Bean(name = "primaryTransactionManager") @Primary public DataSourceTransactionManager transactionManager(@Qualifier("primaryDataSource") DataSource dataSource) { return new DataSourceTransactionManager(dataSource); } @Bean(name = "primarySqlSessionTemplate") @Primary public SqlSessionTemplate sqlSessionTemplate(@Qualifier("primarySqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception { return new SqlSessionTemplate(sqlSessionFactory); } }
副数据源 配置文件
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.autoconfigure.jdbc.DataSourceBuilder; 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.quipoo.mybatis.minorMapper",sqlSessionTemplateRef = "minorSqlSessionTemplate") public class MinorDataSourceConfig { @Bean(name="minorDatasource") @ConfigurationProperties("spring.datasource.minor") public DataSource dataSource(){ return DataSourceBuilder.create().build(); } @Bean(name="minorSqlSessionFactory") public SqlSessionFactory sqlSessionFactory(@Qualifier("minorDatasource") DataSource dataSource )throws Exception{ SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); sqlSessionFactoryBean.setDataSource(dataSource); sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:/mybatis2/*.xml")); return sqlSessionFactoryBean.getObject(); } @Bean(name="minorTransactionManager") public DataSourceTransactionManager dataSourceTransactionManager(@Qualifier("minorDatasource")DataSource dataSource){ return new DataSourceTransactionManager(dataSource); } @Bean(name="minorSqlSessionTemplate") public SqlSessionTemplate sqlSessionTemplate(@Qualifier("minorSqlSessionFactory")SqlSessionFactory sqlSessionFactory){ SqlSessionTemplate sqlSessionTemplate = new SqlSessionTemplate(sqlSessionFactory); return sqlSessionTemplate; } }