Springboot + Mybatis-plus 并配置多数据源和简单使用

文章目录

  • 前言
  • 使用步骤
    • 1.在pom.xml 引入库
    • 2.application.yml添加配置信息
    • 3.在service层的方法中,使用 @DS 切换数据源


前言

随笔记录配置使用过程:dynamic-datasource-spring-boot-starter 是一个基于springboot的快速集成多数据源的启动器。只做 切换数据源 这件核心的事情,并不限制你的具体操作,切换了数据源可以做任何CRUD

使用步骤

1.在pom.xml 引入库

前提:已经创建一个springboot项目

代码如下:

<!-- 配置多数据源 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
    <version>3.3.2</version>
</dependency>

2.application.yml添加配置信息

代码如下:


# 配置多数据源  使用:如果需要调用不用的数据库源,只需要再impl里面使用注释@DS("数据源名称")即可
spring:
  datasource:
    dynamic:
      primary: master  #设置默认的数据源或者数据源组,默认值即为master
      strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
      datasource:
        master:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://localhost:3306/common_db?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
          username: root
          password: root
        slave1:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
          username: root
          password: root
        slave2:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
          username: root
          password: root

3.在service层的方法中,使用 @DS 切换数据源

@DS 可以注解在方法上或类上,同时存在就近原则 方法上注解 优先于 类上注解

注解 结果
没有@DS 默认数据源
@DS(“dsName”) dsName可以为组名也可以为具体某个库的名称

代码如下:

    @DS("master")   //多数据源注解,指定master数据库
    @Override
    public void findAll() {
        List<SysUserEntity> list = sysUserMapper.selectList(null);
        System.out.println(list);
    }

    @DS("slave1")   //多数据源注解,指定slave1数据库
    @Override
    public void save() {
        SysUserEntity userEntity = new SysUserEntity();
        userEntity.setUsername("测试save");
        userEntity.setMobile("13500000000");
        userEntity.setEmail("[email protected]");
        sysUserMapper.insert(userEntity);
    }

    @DS("slave2")   //多数据源注解,指定slave2数据库
    @Override
    public void updateByUserId(SysUserEntity userEntity) {
        sysUserMapper.updateById(userEntity);
    }

可以在测试类中测试一下,查看控制台的SQL语句和数据库中的数据,到此配置完成!


你可能感兴趣的:(随笔,spring,boot,java,spring)