当前位置: 首页 > 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) {}

相关文章:

  • C# 一个解决方案放一个dll项目,一个dll测试项目 ,调试dll项目的源码
  • NLP学习路线图(二十三):长短期记忆网络(LSTM)
  • BERT vs Rasa 如何选择 Hugging Face 与 Rasa 的区别 模型和智能体的区别
  • 祝贺XC3576H通过银河麒麟桌面操作系统的兼容性测试,取得麒麟软件互认证证书
  • tensorflow image_dataset_from_directory 训练数据集构建
  • 力扣刷题Day 70:在排序数组中查找元素的第一个和最后一个位置(34)
  • python3GUI--车牌、车牌颜色识别可视化系统 By:PyQt5(详细介绍)
  • 【更新至2024年】1991-2024年上市公司信息披露质量KV指数数据(含原始数据+计算过程+结果)
  • Vue跨层级通信
  • c++中char *p指针指向字符串输出问题
  • 2D 写实交互数字人:多终端实时交互,引领数字化浪潮
  • 软件工程:如何在项目中把软件做好
  • 数学复习笔记 25
  • 神经符号AI的企业应用:结合符号推理与深度学习的混合智能
  • 虚拟机CentOS 7 网络连接显示“以太网(ens33,被拔出)“、有线已拔出、CentOS7不显示网络图标
  • Redis中的setIfAbsent方法和execute
  • Mybatis入门到精通
  • SQL 中 JOIN 的执行顺序优化指南
  • GAN模式崩塌难题:成因分析与多维度解决方案
  • nlohmann/json简介及使用
  • 网站怎么做最省钱/昆山网站建设推广
  • 日本 男女做受网站/长沙建站seo公司
  • 时间轴 网站模板/注册网站平台要多少钱
  • 手机网站模板安装方法/seo外链推广员
  • 展览公司设计费/安徽seo人员
  • 国内永久在线免费建站/2022拉人头最暴利的app