springboot 整合mybatis plus,使用druid 切换多数据源实现单数据库事务,附赠项目源码地址

news2024/11/22 14:45:06

项目源码地址

GitHub - liyanlei58/ssm: springboot druid mybatis plus 事务

最近想搭一套spring cloud开发环境,各种不顺利吧,先是spring cloud的组件某些功能不好用,是版本自身的bug。后来又碰到了事务无法回滚这个搞了好几个周,我差点想要放弃,不得不说我有时候确实很执着,今天总算弄清楚了。一开始不知道是哪里错,后来网上找了一个好用的事务程序,但是切到我的项目上还是不好用,之后怀疑是springboot版本问题,怀疑都仅仅是怀疑。

因为mysql jar包,5.XXX的版本与8.XXX的版本的驱动不是一样的,所以把问题锁定到mysql驱动上了,这个是正解吧。网上找到了下面这篇文章,如文章所言我恰巧用的mysql-connector-java:8.0.28版本的jar包,但是按照他的操作我的问题并没有解决。建议自查!MySQL驱动Bug引发的事务不回滚问题,也许你正面临该风险! - 知乎

 后来又找到了事务中动态切换数据源的问题 - 简书 文章,进一步了解数据源是怎么切换的,执行数据库操作的时候(增、删、改、查数据库表或者@Transactional注解开启事务的时候),mybatis会去创建链接,创建链接会选择数据源,在这个时候进行的数据源切换。

于是把这两个注解放到一起

切换数据源是AOP实现的,@Transactional注解也是AOP实现的,又出现一个切换执行顺序的问题,spring切面执行顺序-事务切面注意点 - 简书 看了这篇文章,在自定义注解的AOP切面上加上@Order(-1),问题终于算是解决了。事务可以正常,数据源也可以正常切换了。

附@Primary注解说明  

其作用与功能,当有多个相同类型的bean时,使用@Primary来赋予bean更高的优先级。

Spring中@Primary注解_盲目的拾荒者的博客-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

银河麒麟服务器v10 sp1 安装mysql

可以先用 dpkg --list|grep mysql 查看自己的mysql有哪些依赖: 上图已经是安装后的截图,然后再卸载 sudo apt-get autoremove --purge mysql-common 本文在没有安装之前,只有mysql-common包,再用dpkg --list|grep mysql查看&…

[MySQL]在搭载Linux系统(centos7)的云服务上安装MySQL

[MySQL]MySQL 在 Centos 7环境安装 安装与卸载中,用户全部切换成为root,⼀旦安装,普通用户也能够使用。 文章目录 [MySQL]MySQL 在 Centos 7环境安装1. 卸载不要的环境2. 获取MySQL官方yum源3. 安装mysql yum 源,对比前后yum源4.…

Windows server 下关闭135/139/445端口

一、关闭​ ​135端口​​ 方案一 第一步 运行dcomcnfg,打开“组件服务”→“计算机”,在“我的电脑”上右键点击,选“属性”;然后点默认属性,把“在此计算机上启用分布式COM(E)”的勾去掉&a…

深入理解Spring Boot:从入门到精通

摘要 Spring Boot是一个用于构建独立、生产级别的Spring应用程序的框架。它以简化配置和快速开发为设计目标,使开发人员能够更专注于业务逻辑的实现。本文将深入探讨Spring Boot的核心概念、特性和最佳实践,帮助读者从入门到精通。 引言 在当今的软件开发…

pod 控制器 4

对于 pod 使用 yaml 文件或者 json 描述文件生成,之前都有提到过,且对 yaml 的每一个属性都有介绍到 确实是属性非常的多,但是我们知道如何去区分哪些是重要的部分,哪些是可有可无的部分之后,这些就变得简单了 pod 的…

用Linux搭建网站(LAMP)

安装环境 演示服务器版本为CentOS 8 安装apache 下载apache yum install httpd httpd-devel 启动apache服务器 systemctl start httpd设置apache开机自启 systemctl enable httpd查看apache运行状态,绿色即正常运行 systemctl status httpd关闭和禁用防火墙 …

Python语言在地球科学领域中的实践技术

Python是功能强大、免费、开源,实现面向对象的编程语言,Python能够运行在Linux、Windows、Macintosh、AIX操作系统上及不同平台(x86和arm),Python简洁的语法和对动态输入的支持,再加上解释性语言的本质&…

《Redis 核心技术与实战》课程学习笔记(一)

基本架构:一个键值数据库包含什么? 这样学 Redis,才能技高一筹 为了保证数据的可靠性,Redis 需要在磁盘上读写 AOF 和 RDB,但在高并发场景里,这就会直接带来两个新问题: 一个是写 AOF 和 RDB …

关于Kettle ETL java脚本编写遇到的一些问题记录

Kettle ETL java脚本编写遇到的一些问题记录 1.文本信息输出 使用方法**logBasic()**参数必须是字符串 这部分内容会在ETL的日志窗口显示 2.获取参数数据 1.获取上个节点传输的数据 可以直接在左侧双击获取 2.全局参数获取 在启动运行的变量设置参数 在java代码中获取方式 …

Unity内存分析与优化实践

目录 前言优化前分析Committed Memory Tracking StatusMemory Usage 开始内存优化贴图优化贴图分辨率优化去除透明通道和mipmap其他关于贴图的优化技术 Shader优化优化Always Included Shaders优化Preloaded Shaders优化Shader代码共享Shader 优化Mesh降低屏幕分辨率优化效果内…

IDEA+Spring Boot+MyBatis+shiro+Layui+Mysql智能平台管理系统

IDEAJavaSpring BootMyBatisshiroLayuiMysql智能平台管理系统 一、系统介绍1.环境配置 二、系统展示1.登录2.注册3.发帖4.留言5.提交问卷6.展示公告7.查看文章8.管理员登录9.管理员管理10.用户管理11.问卷管理12.问卷结果管理13.帖子分类管理14.数据分析统计15.公告管理16.帖子…

基于线性准则的考虑风力发电不确定性的分布鲁棒优化机组组合(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Node.js知识梳理(二)——进阶

以下内容来自对《从前端到全栈》一书的学习记录~ 学习的时候用的是V16.20.0,18之后的语法差别还是有的~ 请求优化 我们在请求资源的时候,是需要做优化的,这里的优化涉及到了缓存。浏览器的缓存策略有两种: 强缓存协商缓存 关于…

分解整体:将整体式架构转换为微服务的容器化之旅

传统上,软件应用程序是使用单体架构开发的,其中所有应用程序组件都紧密交织在一起,并作为一个单元进行部署。随着软件应用变得更为复杂,组织开始依赖分布式系统,单体架构的限制开始变得更加明显。容器化被引入作为解决…

关于连接数据库时只能使用localhost而不能使用IP连接的问题解决办法

出现:java.sql.SQLException: null, message from server: "Host DESKTOP-H84MBU3 is not allowed to connect to this MySQL server"问题 解决办法: 1、打开数据库操作命令窗口 2、修改user表中 "root" 所对应的 "host&q…

JMeter之IP欺骗技术(模拟不同的IP地址并发请求)

目录 前言: 第一步:在负载机上绑定IP地址 第二步:点击高级,添加伪造的IP地址 第三步:新增IP地址复制到文本 第四步:新建参数化请求 第五步:新建压力测试脚本 第六步:配置线程…

【Mysql】事务原理与优化最佳实践(四)

前言 我们的数据库一般都会并发执行多个事务,多个事务可能会并发的对相同的一批数据进行增 删改查操作,可能就会导致我们说的脏写、脏读、不可重复读、幻读这些问题。 这些问题的本质都是数据库的多事务并发问题,为了解决多事务并发问题&…

【C】函数

目录 【1】函数是什么 【2】C语言中函数的分类 【2.1】库函数 【2.2】如何学会使用库函数 【2.3】自定义函数 【3】函数的参数 【3.1】实际参数(实参) 【3.2】形式参数(形参) 【4】函数的调用 【4.1】传值调用 【4.2】传址调用 【…

kubernetes环境搭建及部署

一、kubernetes 概述 1、kubernetes 基本介绍 kubernetes,简称 K8s,是用 8 代替 8 个字符“ubernete”而成的缩写。是一个开源 的,用于管理云平台中多个主机上的容器化的应用,Kubernetes 的目标是让部署容器化的 应用简单并且高效…

【Python】文件

文章目录 一. 什么是文件二. 文件路径三. 打开文件四. 关闭文件五. 写文件1. 清空写2. 追加写 六. 读文件1. 使用 read 方法读取2. 使用 for 循环按行读取3. 使用 readlines 方法读取整个文件的内容 七. 上下文管理器1. 什么是上下文管理器?2. 为什么要有上下文管理…