面试 Yarn security handlebarsjs 后台管理页面模板 cpm计算 js回调函数写法 dplayer不能全屏 linux撤销 python界面 数据库教程 python手册 python关键字 python搭建网站 python中import用法 java实现 java查看版本 java手册 java数组添加值 java的方法 java网课 java8函数式编程 linux命令 怎么安装linux python开发实例 电子书之家 谷歌地球打不开 猫爪 枪神传说辅助 考试练习系统 dota改键工具 网络克隆 惠普战99 cdr字体加粗 子节点 cad自动保存位置 草图大师版本转换器 屏幕录像机 软媒u盘启动 未来教育考试系统
当前位置: 首页 > 学习教程  > 编程语言

mybatis-plus配置多数据源

2020/12/5 10:55:17 文章标签:

文章目录引入依赖使用注意引入依赖 <!--基于springboot的快速集成多数据源的启动器--> <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.1.0</version…

文章目录

      • 引入依赖
      • 使用
      • 注意

引入依赖

<!--基于springboot的快速集成多数据源的启动器-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
    <version>3.1.0</version>
</dependency>

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

yml配置

spring:
  autoconfigure:
    # 排除掉druid的原生配置
    exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
  datasource:
    dynamic:
      # 以下是全局默认值,可以全局更改(所有数据源, 可以针对数据源做单独设置)
      druid:
        # 监控统计拦截的filters
        filters: stat
        # 配置初始化大小/最小/最大
        initial-size: 1
        min-idle: 1
        max-active: 20
        # 获取连接等待超时时间
        max-wait: 60000
        # 间隔多久进行一次检测,检测需要关闭的空闲连接
        time-between-eviction-runs-millis: 60000
        # 一个连接在池中最小生存的时间
        min-evictable-idle-time-millis: 300000
        validation-query: SELECT 'x'
        test-while-idle: true
        test-on-borrow: false
        test-on-return: false
        # 打开PSCache,并指定每个连接上PSCache的大小。oracle设为true,mysql设为false。分库分表较多推荐设置为false
        pool-prepared-statements: false
        max-pool-prepared-statement-per-connection-size: 20
        stat:
          merge-sql: true
          log-slow-sql: true
          slow-sql-millis: 2000
      # 设置默认的数据源或者数据源组,默认值即为master
      primary: master
      # 设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候回抛出异常,不启动会使用默认数据源
      strict: false
      datasource:
        # 智慧营销数据源
        master:
          url: jdbc:mysql://localhost:3306/bicReport?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8
          username: ucds
          password: ucds
          driver-class-name: com.mysql.jdbc.Driver
        # 计费系统数据源
        cbs:
          url: jdbc:mysql://localhost:3306/cbs?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8
          username: root
          password: MYSQL-ucloud-2020
          driver-class-name: com.mysql.jdbc.Driver
        # 内控系统数据源
        ics:
          url: jdbc:mysql://localhost:3306/ics?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8
          username: root
          password: MYSQL-ucloud-2020
          driver-class-name: com.mysql.jdbc.Driver
          ########下面可以针对某个数据源进行个性化设置#############
          #druid: # 以下参数针对每个库可以重新设置druid参数
            #initial-size:
            #validation-query: select 1 FROM DUAL #比如oracle就需要重新设置这个
            #public-key: #(非全局参数)设置即表示启用加密,底层会自动帮你配置相关的连接参数和filter。

使用

service 层添加数据源名称

也可以在mapper层添加数据源名称, 注解一样

@Service
@DS("master")
public class CostSummaryServiceImpl extends ServiceImpl<CostSummaryMapper, CostSummary> 
    implements CostSummaryService {
}

注意

  1. 不添加使用默认数据源(primary), 上面配置中严格内模式strict: true时好像不添加也是会执行默认数据源;

  2. 嵌套事务不会生效, 且在使用事务的service层方法中, 不会切换数据源,因为事务是在Connection实现, 而切换数据源会切换connection实现;详见: https://blog.csdn.net/w57685321/article/details/106823660/ ;

  3. serviceA(ics) serviceB(不写数据源) serviceC(master): A 中调用B和C, 两种情况:

    加了事务: 全部使用数据源A;

    不加事务: A使用数据源ics, B使用数据源ics(注意并没有使用默认的master), C使用数据源master。


本文链接: http://www.dtmao.cc/news_show_450338.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?