Spring: SpringBoot MybatisPlus框架动态数据源

一、需求背景

项目中需要接入多个数据库,并使用MybatisPlus进行增删改查操作。

二、解决方案

dynamic-datasource-spring-boot-starter 是一个基于Spring Boot的开源库,用于简化在Spring Boot应用中实现多数据源的支持。这个库提供了自动配置和动态数据源切换的功能,使得开发者可以更方便地进行多数据库的管理与操作。

使用dynamic-datasource-spring-boot-starter实现动态数据源的基本步骤如下:

1、添加依赖: 在你的pom.xml或者build.gradle文件中添加依赖。

<dependencies>  
    <!-- dynamic-datasource-spring-boot-starter -->  
    <dependency>  
        <groupId>com.baomidou</groupId>  
        <artifactId>dynamic-datasource-spring-boot-starter</artifactId>  
        <version>3.4.1</version>  
    </dependency>  
    <!-- mybatis-plus-boot-starter -->  
    <dependency>  
        <groupId>com.baomidou</groupId>  
        <artifactId>mybatis-plus-boot-starter</artifactId>  
        <version>最新版本</version>  
    </dependency>  
    <!-- 其他依赖 -->  
</dependencies>

2、配置数据源: 在application.yml或application.properties中配置多个数据源的信息。

spring:  
  datasource:  
    dynamic:  
      primary: master # 设置默认的数据源或者数据源组,默认值即为master  
      datasource:  
        master:  
          url: jdbc:mysql://localhost:3306/master_db?useSSL=false&serverTimezone=UTC  
          username: root  
          password: 123456  
          driver-class-name: com.mysql.cj.jdbc.Driver  
        slave:  
          url: jdbc:mysql://localhost:3306/slave_db?useSSL=false&serverTimezone=UTC  
          username: root  
          password: 123456  
          driver-class-name: com.mysql.cj.jdbc.Driver

3、使用注解或 AOP 进行数据源切换
可以使用 @DS 注解在方法或类级别上指定要使用的数据源,或者在 AOP 切面中根据某些条件动态切换数据源。

  • 使用@DS注解,可以切换数据源。如果没有配置@DS,则使用默认数据源(使用配置文件中的primary源)。
  • @DS 可以注解在方法上和类上,同时存在方法注解优先于类上注解。
  • 注解在service实现或mapper接口方法上,但强烈不建议同时在service和mapper注解。
@Service  
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {  
  
    @Override  
    @DS("slave") // 指定使用 slave 数据源  
    public List<User> selectAll() {  
        return baseMapper.selectList(null);  
    }  
}

或者,使用 AOP 进行更复杂的切换逻辑。

相关推荐

  1. Spring: SpringBoot MybatisPlus框架动态数据

    2024-03-16 04:06:01       24 阅读
  2. 动态数据

    2024-03-16 04:06:01       27 阅读
  3. springboot动态切换数据

    2024-03-16 04:06:01       10 阅读
  4. springboot多数据&动态数据(主从)

    2024-03-16 04:06:01       21 阅读
  5. SpringBoot实现动态数据配置

    2024-03-16 04:06:01       33 阅读
  6. SpringBoot实现动态数据配置

    2024-03-16 04:06:01       30 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-16 04:06:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-16 04:06:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-16 04:06:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-16 04:06:01       20 阅读

热门阅读

  1. LLM(大语言模型)常用评测指标-MAP

    2024-03-16 04:06:01       24 阅读
  2. 自然语言处理(NLP)技术

    2024-03-16 04:06:01       21 阅读
  3. 总结写力扣题中C++常用的方法

    2024-03-16 04:06:01       22 阅读
  4. TCP的可靠传输

    2024-03-16 04:06:01       26 阅读
  5. Spring、SpringMVC、SpringBoot的区别

    2024-03-16 04:06:01       19 阅读
  6. openGauss安装与使用

    2024-03-16 04:06:01       23 阅读
  7. Memcached

    Memcached

    2024-03-16 04:06:01      20 阅读
  8. ORM Bee数据源的使用, Bee有自己的数据源吗?

    2024-03-16 04:06:01       19 阅读
  9. 一文了解前端面试重点--闭包

    2024-03-16 04:06:01       23 阅读
  10. 专升本英语语法学习

    2024-03-16 04:06:01       22 阅读