SpringBoot-多数据源切换和事物处理(免费)

作者原始文章: SpringBoot-多数据源切换和事物处理 最新内容和改动请看上面的文章

安装

<dependency>
    <groupId>com.gitee.huanminabc</groupId>
    <artifactId>dynamic-datasource</artifactId>
    <version>1.0.3-RELEASE</version>
</dependency>

配置

spring:
  datasource:
    default-db-key: master # 默认数据源key
    database-load-activate: false # 是否启用数据库加载
    frame-type: mybatis-plus # 框架类型 mybatis-plus or mybatis
    multi-db:
      - master:
          driver-class-name: com.mysql.cj.jdbc.Driver
          type: com.alibaba.druid.pool.DruidDataSource
          username: root
          password: root
          url: jdbc:mysql://192.168.47.130:3306/demo?characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false&maxReconnects=10&useSSL=false&serverTimezone=Asia/Shanghai&useTimezone=true
      - local:
          driver-class-name: com.mysql.cj.jdbc.Driver
          type: com.alibaba.druid.pool.DruidDataSource
          username: root
          password: root
          url: jdbc:mysql://127.0.0.1:3306/demo?characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false&maxReconnects=10&useSSL=false&serverTimezone=Asia/Shanghai&useTimezone=true
      - resource:
          driver-class-name: com.mysql.cj.jdbc.Driver
          type: com.alibaba.druid.pool.DruidDataSource
          username: root
          password: root
          url: jdbc:mysql://192.168.47.130:3306/resource?characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false&maxReconnects=10&useSSL=false&serverTimezone=Asia/Shanghai&useTimezone=true

# 无须设置mybatis-plus的配置会自动根据frame-type识别的  ,而mybatis-plus兼容mybatis的配置
mybatis:
  #1.classpath:只会到你的classes路径中查找找文件。
  #2.classpath*:不仅会到classes路径,还包括jar文件中(classes路径)进行查找。
  mapper-locations: classpath*:/**/*Mapper.xml    # mapper映射文件位置
  type-aliases-package: com.gitee.huanminabc.**.entity    # 实体类所在的位置
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl   #用于控制台打印sql语句
    map-underscore-to-camel-case: true #开启将带有下划线的表字段 映射为驼峰格式的实体类属性

注意: 数据源的 key 不能重复否则报错。

数据库配置(必须)

就算是不启动 database-load-activate=true 也必须有一个resource 库,这个里面必须有一个t_datasource 表, 而这个库可以存储一些共有资源 , 变化频率较低的数据。


-- 下表要放入到默认数据源中的数据库里才行
CREATE TABLE `t_datasource` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '绑定的key,用于数据源的切换',
  `url` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '数据库连接地址',
  `username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '数据库用户名',
  `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '数据库密码',
  `driverClassName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '数据库驱动',
  `pool` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'com.zaxxer.hikari.HikariDataSource' COMMENT '数据库连接池类型: com.alibaba.druid.pool.DruidDataSource,com.zaxxer.hikari.HikariDataSource,..',
  `type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '数据库类型:  mysql ,oracle,..',
  `state` int(2) NOT NULL DEFAULT '1' COMMENT '是否可用: 1可用 ,2不可用',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `key` (`key`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

注意: 这个数据库必选我占时不想去掉, 因为我发现, 很多时候用着用着,就会使用数据库来存储连接信息了, 不然每个项目都需要在 yml 维护大量的多数据源非常麻烦。

使用教程

@DBSwitch 数据源切换支持在方法和类上
@DBTransactional事务只支持方法级别的

主启动类上必须添加以下注解, 不要问为什么。

//开启AOP的动态代理,这样可以不用实现接口就能使用AOP
@EnableAspectJAutoProxy(proxyTargetClass = true) 
//开始事务
@EnableTransactionManagement 
public class WebApplication {

数据源切换

截图_20240122223552.png

截图_20240122223620.png

数据源事物

截图_20240122223646.png

加入博主语雀知识库,查看最新文章和技术
点击查看,点击查看,点击查看,点击查看
点赞 -收藏 -关注
有问题在评论区或者私信我-收到会在第一时间回复

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/345555.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【经验分享】豆瓣小组的文章/帖子怎么删除?

#豆瓣小组的文章/帖子怎么删除&#xff1f;# 第一步&#xff1a; 手机登录豆瓣app ↓ 点右下角“我” ↓ 然后在页面点击我的小组 ↓ 点我发布的 ↓ ↓ 再任意点开一个帖子 ↓ 在文章和帖子的右上角有一个笔状的图标&#xff0c;切记不是右上角的横三点… ↓ ↓ 最后点下边的…

git 对象压缩及垃圾对象清理

git 对象压缩及垃圾对象清理 这篇文章让我们来看看 git 的对象压缩机制&#xff0c;前面的几篇文章我们提到&#xff0c;在执行 git add 命令会会把文件先通过 zlib 压缩后放入到「暂存区」&#xff0c;我们先看看这个步骤&#xff1a; 我们这个实例中有一个 1.28m 的 index.…

6.php开发-个人博客项目Tp框架路由访问安全写法历史漏洞

目录 知识点 php框架——TP URL访问 Index.php-放在控制器目录下 ​编辑 Test.php--要继承一下 带参数的—————— 加入数据库代码 --不过滤 --自己写过滤 --手册&#xff08;官方&#xff09;的过滤 用TP框架找漏洞&#xff1a; 如何判断网站是thinkphp&#x…

​比特币大跌的 2 个原因

撰文&#xff1a;秦晋 原文来自Techub News&#xff1a;​比特币大跌的 2 个原因 比特币迎来大跌&#xff01;1 月 23 日凌晨&#xff0c;比特币跌破 40000 美元&#xff0c;为去年 12 月 4 日以来首次&#xff0c;日内跌超 3%。这是自 1 月 10 日美国证监会审批通过 11 只比…

Conda python运行的包和环境管理 入门

Conda系列&#xff1a; 翻译: Anaconda 与 miniconda的区别Miniconda介绍以及安装 Conda 是一个功能强大的命令行工具&#xff0c;用于在 Windows、macOS 和 Linux 上运行的包和环境管理。 本 conda 入门指南介绍了启动和使用 conda 创建环境和安装包的基础知识。 1. 准备…

学习推荐!!HTML5+CSS3从入门到精通

获取方式&#xff1a; 《HTML 5 CSS3从入门到精通》 《HTML5CSS3从入门到精通目录》 第1章 Web开发新时代 第2章 从HTML、XHTML到HTML5 第3章 创建HTML5文档 第4章 实战HTML5表单 第5章 实战HTML5画布 第6章 HTML5音频与视频 第7章 Web存储 第8章 离线应用 第9章 Workers多线…

K8S的HPA

horiztal Pod Autoscaling&#xff1a;pod的水平自动伸缩&#xff0c;这是k8s自带的模块&#xff0c;它是根据Pod占用cpu比率到达一定的阀值&#xff0c;会触发伸缩机制 Replication controller 副本控制器&#xff1a;控制pod的副本数 Deployment controller 节点控制器&…

从开发、部署到维护:SAAS与源代码小程序的全流程对比

在数字化时代&#xff0c;小程序已成为企业开展业务的重要工具。然而&#xff0c;小程序开发过程中存在多种形式&#xff0c;其中SAAS版本小程序和源代码小程序是最常见的两种。乔拓云SaaS系统作为业界领先的SaaS服务平台&#xff0c;为企业提供高效、便捷的小程序解决方案。与…

echarts 去掉x轴或y轴中的刻度线(分割x轴数值的线)

解决方法 将 xAxis 或者 yAxis 对象下的 axisTick 属性配置 show: false&#xff0c;代码如下&#xff1a; xAxis: {type: category,data: [Mon, Tue, Wed, Thu, Fri, Sat, Sun],//添加以下配置axisTick: { show: false} },效果

【大数据】Flink 系统架构

Flink 系统架构 1.Flink 组件1.1 JobManager1.2 ResourceManager1.3 TaskManager1.4 Dispatcher 2.应用部署2.1 框架模式2.2 库模式 3.任务执行4.高可用设置4.1 TaskManager 故障4.2 JobManager 故障 Flink 是一个用于状态化并行流处理的分布式系统。它的搭建涉及多个进程&…

大厂咋做多系统数据同步方案的?

1 背景 业务线与系统越来越多&#xff0c;系统或业务间数据同步需求也越频繁。当前互联网业务系统大多MySQL数据存储与处理方案&#xff1a; 随信息时代爆炸&#xff0c;大数据量场景下慢慢凸显短板&#xff0c;如&#xff1a;需对大量数据全文检索&#xff0c;对大量数据组合…

java web mvc-02-struts2

拓展阅读 Spring Web MVC-00-重学 mvc mvc-01-Model-View-Controller 概览 web mvc-03-JFinal web mvc-04-Apache Wicket web mvc-05-JSF JavaServer Faces web mvc-06-play framework intro web mvc-07-Vaadin web mvc-08-Grails Struts2 Apache Struts是一个用于创…

Mybatis四大组件

一、Mybatis四大组件 SqlSessionFactoryBuild、SqlSessionFactory、SqlSession、Mapper。 二、SqlSession四大对象 Executor、StatementHandler、ParameterHandler、ResultSetHandler。 这里阐述一下上图的流程 Exeutor发起sql执行任务 1、先调用statementHandler中的pre…

【昕宝爸爸小模块】深入浅出之为什么POI的SXSSFWorkbook占用内存更小

➡️博客首页 https://blog.csdn.net/Java_Yangxiaoyuan 欢迎优秀的你&#x1f44d;点赞、&#x1f5c2;️收藏、加❤️关注哦。 本文章CSDN首发&#xff0c;欢迎转载&#xff0c;要注明出处哦&#xff01; 先感谢优秀的你能认真的看完本文&…

C++ -- 入门(引用)

1.引用 1.1引用的概念 引用不是新定义一个变量&#xff0c;而是给已存在变量取了一个别名&#xff0c;编译器不会为引用变量开辟内存空间&#xff0c;它和它引用的变量共用同一块内存空间。 比如&#xff1a;李逵&#xff0c;在家称为"铁牛"&#xff0c;江湖上人称&q…

搭建Android开发环境—— 熟悉Android开发工具,掌握Android移动端开发环境的搭建、项目导入,并能够将项目部署到模拟器和真机进行测试。

搭建Android开发环境 一、实验目的 熟悉Android开发工具&#xff0c;掌握Android移动端开发环境的搭建、项目导入&#xff0c;并能够将项目部署到模拟器和真机进行测试。 二、实验设备及器件 1、JDK1.8安装包 2、Android Studio安装包 三、实验内容 完成JDK和Android Stud…

java web mvc-06-play framework intro

拓展阅读 Spring Web MVC-00-重学 mvc mvc-01-Model-View-Controller 概览 web mvc-03-JFinal web mvc-04-Apache Wicket web mvc-05-JSF JavaServer Faces web mvc-06-play framework intro web mvc-07-Vaadin web mvc-08-Grails 开源 The jdbc pool for java.(java …

中仕教育:“三不限”事业编的含义

所谓“三不限”&#xff0c;是指在报考事业单位时&#xff0c;对考生的户籍、年龄、学历不作任何限制。所以全国各地的考生只要符合招聘条件&#xff0c;都可以报考。所以每一年的三不限岗位竞争压力都比较大&#xff0c;报考人数都有很多。 ‘三不限’岗位招考信息在哪里看?…

测试用例评审流程

1:评审的过程 A:开始前做好如下准备 1、确定需要评审的原因 2、确定进行评审的时机 3、确定参与评审人员 4、明确评审的内容 5、确定评审结束标准 6、提前至少一天将需要评审的内容以邮件的形式发送给评审会议相关人员。并注明详审时间、地点及偿参与人员等。 7、 在邮件中提醒…

智慧之光:ChatGPT 引领工作效率新纪元

随着科技的不断发展&#xff0c;人工智能&#xff08;AI&#xff09;已经逐渐融入我们的日常生活和工作中。其中&#xff0c;ChatGPT 作为一种先进的 AI 技术&#xff0c;正逐步改变我们的工作方式&#xff0c;提升我们的工作效率。本文灸哥将介绍如何利用ChatGPT提升工作效率&…