基于SpringBoot+Druid实现多数据源:baomidou多数据源

前言

本博客姊妹篇

一、功能描述

  • 支持 数据源分组 ,适用于多种场景 纯粹多库 读写分离 一主多从 混合模式。
  • 支持数据库敏感配置信息 加密 ENC()。
  • 支持每个数据库独立初始化表结构schema和数据库database。
  • 支持无数据源启动,支持懒加载数据源(需要的时候再创建连接)。
  • 支持 自定义注解 ,需继承DS(3.2.0+)。
  • 提供并简化对Druid,HikariCp,BeeCp,Dbcp2的快速集成。
  • 提供对Mybatis-Plus,Quartz,ShardingJdbc,P6sy,Jndi等组件的集成方案。
  • 提供 自定义数据源来源 方案(如全从数据库加载)。
  • 提供项目启动后 动态增加移除数据源 方案。
  • 提供Mybatis环境下的 纯读写分离 方案。
  • 提供使用 spel动态参数 解析数据源方案。内置spel,session,header,支持自定义。
  • 支持 多层数据源嵌套切换 。(ServiceA >>> ServiceB >>> ServiceC)。
  • 提供 **基于seata的分布式事务方案。
  • 提供 本地多数据源事务方案。

更多查看官方:https://baomidou.com/pages/a61e1b/#dynamic-datasource

二、代码实现

2.1 引入依赖

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
    <version>3.5.0</version>
</dependency>

2.2 配置

# spring配置
spring:
  # 数据源配置
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    dynamic:
      primary: master
      strict: false
      datasource:
        master:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://127.0.0.1:3306/boot_codegen?useUnicode=true&characterEncoding=UTF8&serverTimezone=GMT%2B8&useSSL=false
          username: root
          password: root
        slave:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://127.0.0.1:3306/boot_business?useUnicode=true&characterEncoding=UTF8&serverTimezone=GMT%2B8&useSSL=false
          username: root
          password: root
      druid:
        initial-size: 10
        min-idle: 10
        max-active: 100
        max-wait: 60000
        time-between-eviction-runs-millis: 60000
        min-evictable-idle-time-millis: 300000
        validation-query: select 1
        test-while-idle: true
        test-on-borrow: false
        test-on-return: false
        pool-prepared-statements: true
        max-pool-prepared-statement-per-connection-size: 20
    druid:
      web-stat-filter:
        enabled: true
        url-pattern: /*
        exclusions: '*.js,*.css,*.gif,*.png,*.jpg,*.ico,/druid/*'
      stat-view-servlet:
        enabled: true
        url-pattern: /druid/*
        login-username: admin
        login-password: 123456
      filter:
        stat:
          enabled: true
          log-slow-sql: true
          slow-sql-millis: 1000
          merge-sql: true
        wall:
          enabled: true
          config:
            multi-statement-allow: true

2.3 使用

package com.qiangesoft.datasourcembpd.service.impl;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qiangesoft.datasourcembpd.entity.BcgDataSource;
import com.qiangesoft.datasourcembpd.mapper.BcgDataSourceMapper;
import com.qiangesoft.datasourcembpd.service.IBcgDataSourceService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * <p>
 * 数据源 服务实现类
 * </p>
 *
 * @author qiangesoft
 * @since 2024-03-13
 */
@Slf4j
@RequiredArgsConstructor
@Service
public class BcgBcgDataSourceServiceImpl extends ServiceImpl<BcgDataSourceMapper, BcgDataSource> implements IBcgDataSourceService {

    @DS("slave")
    @Override
    public List<BcgDataSource> changeDataSourceByAnnotation() {
        return this.list();
    }
}


相关推荐

  1. 基于SpringBoot+Druid实现数据baomidou数据

    2024-03-18 22:40:01       45 阅读
  2. springboot实现数据

    2024-03-18 22:40:01       47 阅读
  3. 基于SpringBoot+Druid实现数据:原生注解式

    2024-03-18 22:40:01       41 阅读
  4. Springboot实现配置数据

    2024-03-18 22:40:01       55 阅读
  5. Springboot JPA实现数据配置

    2024-03-18 22:40:01       55 阅读
  6. 若依实现数据

    2024-03-18 22:40:01       43 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-18 22:40:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-18 22:40:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-18 22:40:01       82 阅读
  4. Python语言-面向对象

    2024-03-18 22:40:01       91 阅读

热门阅读

  1. centos系统ssh7.4升级9.6

    2024-03-18 22:40:01       34 阅读
  2. 【C++】map与set容器的应用总结

    2024-03-18 22:40:01       41 阅读
  3. ceph删除坏的磁盘

    2024-03-18 22:40:01       45 阅读
  4. spring学习源码第一课

    2024-03-18 22:40:01       31 阅读
  5. kali wpscan 命令

    2024-03-18 22:40:01       43 阅读