https://www.jianshu.com/p/ff5af6c59365
多数据源配置,在我们集成多个系统或者对接的时候经常会用到,结合springboot、druid提供了比较方便的集成方案。
思路:
1、yml中配置多个数据源信息
2、通过AOP切换不同数据源
3、配合mybatis plus使用
1、yml配置
spring: aop: proxy-target-class: true auto: true datasource: druid: db1: url: jdbc:mysql://localhost:3306/eboot username: root password: root driver-class-name: com.mysql.jdbc.Driver initialSize: 5 minIdle: 5 maxActive: 20 db2: url: jdbc:oracle:thin:@192.168.136.222:ORCL username: sa password: sa123456 driver-class-name: oracle.jdbc.OracleDriver initialSize: 5 minIdle: 5 maxActive: 20 db3: url: jdbc:oracle:thin:@192.168.136.223:ORCL username: sb password: sb123456 driver-class-name: oracle.jdbc.OracleDriver initialSize: 5 minIdle: 5 maxActive: 20
2、启动加载多个数据源
下面mybatis plus的全局配置被注掉了,因为同样可以在yml中配置也可以
package com.df.openapi.config; import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder; import com.baomidou.mybatisplus.MybatisConfiguration; import com.baomidou.mybatisplus.entity.GlobalConfiguration; import com.baomidou.mybatisplus.mapper.LogicSqlInjector; import com.baomidou.mybatisplus.plugins.PaginationInterceptor; import com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean; import com.df.openapi.config.db.DBTypeEnum; import com.df.openapi.config.db.DynamicDataSource; import com.df.openapi.config.db.MyMetaObjectHandler; import org.apache.ibatis.plugin.Interceptor; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.type.JdbcType; 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.transaction.annotation.EnableTransactionManagement; import javax.sql.DataSource; import java.util.HashMap; import java.util.Map; /** * @author 小尘哥 */ @EnableTransactionManagement @Configuration @MapperScan("com.df.openapi.**.mapper.db*") public class MybatisPlusConfig { @Bean public PaginationInterceptor paginationInterceptor() { PaginationInterceptor paginationInterceptor = new PaginationInterceptor(); paginationInterceptor.setLocalPage(true); return paginationInterceptor; } @Bean(name = "db1") @ConfigurationProperties(prefix = "spring.datasource.druid.db1") public DataSource db1() { return DruidDataSourceBuilder.create().build(); }