SpringBoot 2.1.10.RELEASE 结合MybatisPlus 3.2.0 版本整合Druid多数据源

该博客介绍了如何在SpringBoot 2.1.10.RELEASE版本中结合MybatisPlus 3.2.0进行Druid多数据源的整合。首先展示了Demo的结构图,并提供了源码下载链接。接着,博主详细说明了pom.xml中添加的依赖,以及MybatisPlus和Druid的整合步骤。在Druid多数据源配置中,提到了`application-druid.yml`的设置,同时在`application.yml`中启用了相关配置。为了实现数据源切换,博主建议在需要的地方使用`@DS("数据源名称")`注解,并给出了编写测试方法和接口的示例。
摘要由CSDN通过智能技术生成
  • Demo 结构及源码

    • Demo结构图
      在这里插入图片描述
    • 源码链接: https://download.csdn.net/download/weixin_44187730/12026906
  • pom.xml添加依赖

<dependencies>
 <!-- Swagger2 接口文档 -->
        <dependency>
            <groupId>com.spring4all</groupId>
            <artifactId>swagger-spring-boot-starter</artifactId>
            <version>1.9.1.RELEASE</version>
        </dependency>

        <!-- Druid相关 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.42</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>

        <!--Mybatis Plus相关【核心包、逆向工程、模板引擎、多数据源】-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.2.0</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.1</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <version>2.5.7</version>
        </dependency>

        <!--actuator 监控-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <!--Lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
</dependencies>
  • MybatisPlus整合

    • MP整合: https://blog.csdn.net/weixin_44187730/article/details/101620137
  • Druid多数据源配置application-druid.yml

#Druid多数据源配置信息
spring:
  autoconfigure:
    exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
  datasource:
    #启动执行SQL脚本 ALWAYS:每次初始化  NEVER:不初始化  EMBEDDED:仅初始化一次
    initialization-mode: EMBEDDED
    schema:
      - classpath:sql/master_db.sql
      - classpath:sql/slave_db.sql
    type: com.alibaba.druid.pool.DruidDataSource
    dynamic:
      #指定默认链接的 数据源
      primary: master
      datasource:
        #指定多个数据源链接信息 名称可自己指定
        master:
          url: jdbc:mysql://127.0.0.1:3306/master_db?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
          username: root
          password: admin
          driver-class-name: com.mysql.jdbc.Driver
        slave:
          url: jdbc:mysql://127.0.0.1:3306/slave_db?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
          username: root
          password: admin
          driver-class-name: com.mysql.jdbc.Driver
    druid:
      #初始化大小
      initial-size: 5
      min-idle: 5
      max-active: 20
      #等待超时时间
      max-wait: 60000
      #心跳检测
      time-between-eviction-runs-millis: 60000
      #配置连接在池的最小时间
      min-evictable-idle-time-millis: 300000
      validation-query: SELCET 1
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false
      #打开PSCache
      pool-prepared-statements: true
      max-pool-prepared-statement-per-connection-size: 20
      #配置监控统计连接的filters,去掉后监控sql无法统计
      filters: stat,wall,slf4j
      connection-properties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
      #配置DruidStatFilter
      web-stat-filter:
        enabled: true
        url-pattern: "/*"
        exclusions: "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"
      #配置DruidStatViewServlet
      stat-view-servlet:
        url-pattern: "/druid/*"
        #IP白名单
        allow: 127.0.0.1,192.168.44.*
        #IP黑名单
        deny: 192.168.15.85
        reset-enable: false
        # druid监控台登录用户密码
        login-username: admin
        login-password: 123456
  • 启用相关配置application.yml
#端口配置
server:
  port: 9088
  servlet:
    context-path: /
spring:
  application:
    name: boot-druid-mp-dynamic-db
  profiles:
    active: mp,druid

  • 编写测试方法
    • 在需要切换数据源的地方加上@DS(“数据源名称”)
@Service
public class UsersServiceImpl extends ServiceImpl<UsersMapper, Users> implements UsersService {

    @DS("master")
    @Override
    public List<Users> getAllUserFromMaster() {

        return this.baseMapper.selectList(null);
    }

    @DS("slave")
    @Override
    public List<Users> getAllUserFromSlave() {

        return this.baseMapper.selectList(null);
    }
}

  • 编写测试接口
@RestController
@RequestMapping("/us")
public class UsersController {

    @Autowired
    UsersService usersService;


    @GetMapping("/getAllUserFromMaster")
    public Object getAllUserFromMaster() {

        return usersService.getAllUserFromMaster();
    }

    @GetMapping("/getAllUserFromSlave")
    public Object getAllUserFromSlave() {

        return usersService.getAllUserFromSlave();
    }
}
  • 测试数据源切换
    在这里插入图片描述
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值