spring boot 集成 dynamic-datasource-spring-boot-starter

spring boot 集成 dynamic-datasource-spring-boot-starter

在使用多数据源时,为了不再造轮子,就使用 mybatis-plus 中的 dynamic-datasource-spring-boot-starter

一般集成直接看官网就行 dynamic-datasource-spring-boot-starter

场景

在非多数据源的项目基础上加集成多数据源

现在要讲的是通过 java 代码方式 实现

引入依赖

xml 复制代码
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
    <version>4.3.0</version>
</dependency>

// 用户 postgresql
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <scope>runtime</scope>
</dependency>

配置Properties

application.properties:

properties 复制代码
spring.datasource.password=admin
spring.datasource.platform=mysql
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://192.168.x.x:3306/system?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
spring.datasource.username=admin
# 驱动类型需要!!
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# slave1 postgresql
spring.datasource.slave1.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.slave1.password=admin
spring.datasource.slave1.url=jdbc:postgresql://192.168.x.x:5432/user
spring.datasource.slave1.username=admin
spring.datasource.slave1.driverClassName=org.postgresql.Driver
# 指定多数据源默认数据库
spring.datasource.dynamic.primary=master


# slave2 mysql
spring.datasources.slave2.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasources.slave2.jdbcUrl=jdbc:mysql://192.168.x.x:3306/test?allowPublicKeyRetrieval=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasources.slave2.username=admin
spring.datasources.slave2.password=admin

DataSourceConfig:

java 复制代码
@Configuration
public class DataSourceConfig {

    //原始的数据源
    @Bean(name = "master")
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSourceProperty masterDataSourceProperty() {
        return new DataSourceProperty();
    }

    
    @Bean(name = "slave1")
    @ConfigurationProperties(prefix = "spring.datasource.slave1")
    public DataSourceProperty slave1DataSourceProperty() {
        return new DataSourceProperty();
    }

    @Bean(name = "slave2")
    @ConfigurationProperties(prefix = "spring.datasource.slave2")
    public DataSourceProperty slave2DataSourceProperty() {
        return new DataSourceProperty();
    }


    @Bean
    @Order(1)
    public DynamicDataSourceProvider beanDataSourceProvider(DefaultDataSourceCreator defaultDataSourceCreator) {
        Map<String, DataSourceProperty> dataSourceMap = new HashMap<>();
        dataSourceMap.put("slave1", slave1DataSourceProperty());
        dataSourceMap.put("master", masterDataSourceProperty());
        dataSourceMap.put("slave2", slave2DataSourceProperty());
        return new YmlDynamicDataSourceProvider(defaultDataSourceCreator, dataSourceMap);
    }
}

使用

java 复制代码
@DS("slave1")
@Override
public List<User> queryPage(int offset, int pageSize) {
    //分页
    return baseMapper.queryList(offset,pageSize);
}

good luck!

相关推荐
黄油饼卷咖喱鸡就味增汤拌孜然羊肉炒饭8 小时前
SpringBoot如何实现缓存预热?
java·spring boot·spring·缓存·程序员
AskHarries11 小时前
Spring Cloud OpenFeign快速入门demo
spring boot·后端
isolusion11 小时前
Springboot的创建方式
java·spring boot·后端
Yvemil712 小时前
《开启微服务之旅:Spring Boot Web开发举例》(一)
前端·spring boot·微服务
星河梦瑾13 小时前
SpringBoot相关漏洞学习资料
java·经验分享·spring boot·安全
计算机学长felix14 小时前
基于SpringBoot的“交流互动系统”的设计与实现(源码+数据库+文档+PPT)
spring boot·毕业设计
.生产的驴14 小时前
SpringBoot 对接第三方登录 手机号登录 手机号验证 微信小程序登录 结合Redis SaToken
java·spring boot·redis·后端·缓存·微信小程序·maven
顽疲15 小时前
springboot vue 会员收银系统 含源码 开发流程
vue.js·spring boot·后端
撒呼呼15 小时前
# 起步专用 - 哔哩哔哩全模块超还原设计!(内含接口文档、数据库设计)
数据库·spring boot·spring·mvc·springboot
因我你好久不见15 小时前
springboot java ffmpeg 视频压缩、提取视频帧图片、获取视频分辨率
java·spring boot·ffmpeg