Springboot + mybatis-plus实现多数据源配置

Springboot + mybatis-plus实现多数据源配置

原理上和利用切面实现多数据源配置基本一致,只是有mybatis-plus实现了。如果用的mybatis,可以利用手动aop动态切换
参考https://blog.csdn.net/yy1209357299/article/details/125785635?spm=1001.2014.3001.5502

项目结构

在这里插入图片描述

项目依赖

        <!--mysql依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
           <groupId>com.alibaba</groupId>
           <artifactId>druid-spring-boot-starter</artifactId>
           <version>1.1.10</version>
       </dependency>
       
       <dependency>
           <groupId>com.alibaba</groupId>
           <artifactId>druid</artifactId>
           <version>1.1.10</version>
       </dependency>

  <!-- mybatisPlus的依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.0.6</version>
        </dependency>

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

配置文件

spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
  aop:
    proxy-target-class: true
  autoconfigure:
    exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    dynamic:
      primary: ds1 #设置默认的数据源或者数控组,默认值即为master
      datasource:
        ds1:
          url: jdbc:mysql://localhot:3306/test?characterEncoding=UTF-8&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai
          username: root
          password: 123456
          driverClassName: com.mysql.cj.jdbc.Driver
        ds2:
          url: jdbc:mysql://localhot:3306/test?characterEncoding=UTF-8&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai
          username: root
          password: 123456
          driverClassName: com.mysql.cj.jdbc.Driver
      druid:
        filters: stat,slf4j
        # 初始化连接大小   默认:0
        initial-size: 5
        # 最小空闲连接数 默认:0
        min-idle: 5
        # 最大连接数  默认:8
        max-active: 20
        # 获取连接等待超时的时间(毫秒) 默认:-1
        max-wait: 60000
        # 查询超时时间()
        query-timeout: 90
        # 用来检测连接是否有效的sql,要求是一个查询语句
        validation-query: SELECT 1 FROM DUAL
        # 申请连接时检测连接可用性 默认:false
        test-on-borrow: false
        # 归还连接检测 默认:false
        test-on-return: false
        # 超时是否检测连接可用性
        test-while-idle: true
        # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接 (毫秒)
        time-between-eviction-runs-millis: 600000
        # 配置一个连接在池中最小生存的时间(毫秒,默认30分钟)
        min-evictable-idle-time-millis: 300000
        # 通过别名的方式配置扩展插件,常用的插件有:监控统计用的filter:stat;日志用的filter:log4j;防御sql注入的filter:wall
        # 慢SQL记录 https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatFilter
        filter:
            stat:
              log-slow-sql: true
              slow-sql-millis: 20000
              db-type: mysql
              # SQL合并 默认:false
              merge-sql: false
            wall:
              config:
                delete-allow: true
                drop-table-allow: false
              enabled: true
              db-type: mysql
          # 是否缓存PreparedStatement. PSCache对支持游标的数据库性能提升巨大,比如说oracle.在mysql下建议关闭.
        pool-prepared-statements: false
        # 每个连接上PSCache的大小
        max-pool-prepared-statement-per-connection-size: 20
        # 合并多个DruidDataSource的监控数据
        use-global-data-source-stat: true

启动类

@MapperScan("mapper包的路径")
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})

dao层配置

1、db1

@Mapper
@DS("db1")

2、db2

@Mapper
@DS("db2")

版权声明:本文为yy1209357299原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>