当前位置: 首页 > article >正文

SpringBoot+Mybatisplus配置多数据源(超级简单!!!!)

今天分享配置多数据源的另外一种方式,SpringBo+Mybatisplus配置多数据源,此种方式配置相对简单,都是苞米豆封装好的,配置容易;此篇分享比较简单的方式配置数据源,多个固定的数据源,通过注解选择使用哪个数据源!

  1. 首先需要引入下面的核心依赖:
     <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.0</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.5.0</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.20</version></dependency>
  1. yml文件中配置数据源:
server:port: 8000
spring:datasource:dynamic:# 配置默认数据库,及没有注解指定时走的数据库primary: master#严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源strict: falsedatasource:master: # 默认数据源配置url: jdbc:mysql://localhost:3306/db1?characterEncoding=utf8&useUnicode=true&useSSL=false&serverTimezone=GMT%2B8username: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Driverslave: # 其他数据源配置url: jdbc:mysql://localhost:3306/db2?characterEncoding=utf8&useUnicode=true&useSSL=false&serverTimezone=GMT%2B8username: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Driverhikari:connection-test-query: select 1maximum-pool-size: 8minimum-idle: 2auto-commit: truepool-name: DatebookHikariCPmax-lifetime: 1800000connection-timeout: 30000keepalive-time: 60000

3.使用示例
使用注解@DS指定数据源,给使用非默认数据源添加注解@DS,比如@DS(“slave”),如果不加或者加@DS(“master”),就会走默认数据源;@DS可以注解在 方法 上和 类 上,同时存在方法注解优先于类上注解;注解在 controller层、service 实现或 mapper 接口方法上,不要同时在 service 和 mapper 注解;
官方强烈建议加在service上,主要要保证事务!

@Service
@DS("slave")
public class UserServiceImpl extends ServiceImpl<ModelMapper, Model> implements IUserService {}
@DS("slave")
List<UserInfo> selectAll();
  1. 数据源失效场景
    如果方法或类上添加了 @Transactional,需指定事务管理器或禁用事务自动绑定,否则另外一个数据源失效。或者去掉@Transactional,或者指定事务管理器。
@DS("slave")
@Transactional(rollbackFor = Exception.class, transactionManager = "dynamicDataSourceTransactionManager")  // 显式指定事务管理器
@Override
public void updateUser(String addvcd, Integer num) {}
http://www.lryc.cn/news/2402978.html

相关文章:

  • Git Svn
  • Python爬虫伪装
  • Webpack的基本使用 - babel
  • LLaMA-Factory的5种推理方式总结
  • 链游技术破壁:NFT资产确权与Play-to-Earn经济模型实战
  • 为什么HDI叠孔比错孔设计难生产
  • 数据分析实战2(Tableau)
  • 游戏开发中的CI/CD优化案例:知名游戏公司Gearbox使用TeamCity简化CI/CD流程
  • Linux --TCP协议实现简单的网络通信(中英翻译)
  • LlamaIndex 工作流简介以及基础工作流
  • 如何利用Elastic Stack(ELK)进行安全日志分析
  • 创客匠人:以 AI 利器赋能创始人 IP 打造,加速知识变现新路径
  • Opencv中的copyto函数
  • TeamCity Agent 配置完整教程(配合 Docker Compose 快速部署)
  • 基于深度强化学习的Scrapy-Redis分布式爬虫动态调度策略研究
  • 在 Ubuntu 24.04 LTS 上安装 Jenkins 并配置全局工具(Git、JDK、Maven)
  • Tika Server:企业级文档内容解析的轻量级服务化方案
  • LMG1020YFFR 电子元器件详解
  • 防爆型断链保护器的应用场景有哪些?
  • leetcode_206 反转链表
  • OPenCV CUDA模块光流------高效地执行光流估计的类BroxOpticalFlow
  • 高考:如何合理选择学科、专业以及职业
  • K8S认证|CKS题库+答案| 3. 默认网络策略
  • HTTP、WebSocket、SSE 对比
  • Linux编程:1、文件编程
  • Kyosan K5BMC ELECTRONIC INTERLOCKING MANUAL 电子联锁
  • 【Spark征服之路-2.3-Spark运行架构】
  • PART 6 树莓派小车+QT (TCP控制)
  • 软珊瑚成分 CI-A:靶向口腔癌细胞的 “氧化利剑” 与 ERK 密码
  • Cilium动手实验室: 精通之旅---4.Cilium Gateway API - Lab