要实现多数据源可以采用dynamic-datasource或者mybatis-mate,本文就以dynamic-datasource为例
dynamic-datasource简介
springboot 快速集成多数据源的启动器 使用文档(opens new window)
约定
下面介绍具体使用
<dependency>
<groupId>com.baomidougroupId>
<artifactId>dynamic-datasource-spring-boot-starterartifactId>
<version>4.1.3version>
dependency>
以配置MySQL、postgresql两种不同的数据库为例
spring:
datasource:
dynamic:
primary: postgresql #设置默认的数据源或者数据源组,默认值即为master
strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
datasource:
postgresql: # 名称可以自定义
url: jdbc:postgresql://192.168.xxx.xxx:5432/db_name?useUnicode=true&characterEncoding=UTF-8
username: root
password: xxx
driver-class-name: org.postgresql.Driver
mysql:
url: jdbc:mysql://192.168.xxx.xxx:3306/db_name?serverTimezone=Asia/Shanghai&useSSL=true&characterEncoding=utf-8&useUnicode=true
username: root
password: xxx
driver-class-name: com.mysql.cj.jdbc.Driver
参考:
# 多主多从 纯粹多库(记得设置primary) 混合配置
spring: spring: spring:
datasource: datasource: datasource:
dynamic: dynamic: dynamic:
datasource: datasource: datasource:
master_1: mysql: master:
master_2: oracle: slave_1:
slave_1: sqlserver: slave_2:
slave_2: postgresql: oracle_1:
slave_3: h2: oracle_2
在Mapper层,指定数据源使用@DS(数据源名称)注解,可以注解在方法上或类上,同时存在就近原则 方法上注解 优先于 类上注解。

如:
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mxf.springkafka.pojo.KDaylineQfq;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.HashMap;
import java.util.List;
@Mapper
public interface KDaylineQfqMapper extends BaseMapper<KDaylineQfq> {
List<KDaylineQfq> selectByCode(@Param("stockCode") String stockCode);
@DS("mysql")
List<KDaylineQfq> selectByCode2(@Param("stockCode") String stockCode);
@DS("mysql")
void insertMysqlData(@Param("data") KDaylineQfq data);
@DS("mysql")
void insertMysqlBatchData(@Param("data") List<KDaylineQfq> data);
}