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

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.xdnf.cn/news/874765.html

相关文章:

  • #Java篇:学习node后端之sql常用操作
  • BBU 电源市场报告:深入剖析与未来展望​
  • 洛谷P1591阶乘数码
  • GO语言---函数命名返回值
  • 嵌入式系统中常用的开源协议
  • 41、响应处理-【源码分析】-自定义MessageConverter
  • [C]深入解析条件式日志宏的设计原理
  • Deepfashion2 数据集使用笔记
  • 2025年五一数学建模竞赛A题-支路车流量推测问题详细建模与源代码编写(一)
  • 洛谷 单源最短路径 Dijkstra算法+优先队列
  • 点云数据去噪(Point Cloud Processing Toolbox)
  • C++——智能指针 shared_ptr
  • 小黑黑日常积累:dataclass的简单使用
  • AtCoder解析大全
  • 在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南
  • 基于 qiankun + vite + vue3 构建微前端应用实践
  • 长参考帧LTR
  • 前端八股之JS的原型链
  • 20-项目部署(Docker)
  • 【人工智能】大模型的创造力:从训练到应用的灵感火花
  • 如何配置deepseek + ida-pro-mcp
  • 让AI看见世界:MCP协议与服务器的工作原理
  • [AI Claude] 软件测试2
  • JS利用原型链实现继承
  • Spring 中的disposableBean介绍
  • C语言数据结构笔记2:结构体地址的遍历_结构体嵌套
  • Java DLL依赖缺失解决思路和修复过程(Windows版本)
  • JVM 内存结构 详解
  • 【Java】CopyOnWriteArrayList
  • 使用 SseEmitter 实现 Spring Boot 后端的流式传输和前端的数据接收