@Transactional失效和生效部分常见场景

@Transactional失效和生效部分常见场景

1.不生效

1.1 没有带事务注解的方法调带事务注解的方法

public void initUser1(User user) {save(user);initPoint1(user.getId());
}@Transactional
public void initPoint1(Integer userId) {UserPoint userPoint = new UserPoint();userPoint.setUserId(userId);userPoint.setPoint(0);userPointService.save(userPoint);int i = 5 / 0;
}
@Test
void test1() {User user = new User();user.setId(1);user.setName("1");userService.initUser1(user);
}

1.2 捕获异常,不抛出

@Transactional
public void initUser3(User user) {save(user);initPoint3(user.getId());
}public void initPoint3(Integer userId) {UserPoint userPoint = new UserPoint();userPoint.setUserId(userId);userPoint.setPoint(0);userPointService.save(userPoint);try {int i = 5 / 0;} catch (Exception e) {System.out.println("不抛出异常,事务不生效");}
}
@Test
void test3() {User user = new User();user.setId(3);user.setName("3");userService.initUser3(user);
}

1.3 不带事务方法调带事务方法

public void initUser4(User user) {save(user);initUser4_1(user);
}@Transactional
public void initUser4_1(User user) {user.setId(user.getId()+1);save(user);int i = 5 / 0;
}
@Test
void test4() {User user = new User();user.setId(4);user.setName("4");userService.initUser4(user);
}

2.生效

2.1 带事务注解的方法调无事务注解的私有(公有)方法

@Transactional
public void initUser2(User user) {save(user);initPoint2(user.getId());
}private void initPoint2(Integer userId) {UserPoint userPoint = new UserPoint();userPoint.setUserId(userId);userPoint.setPoint(0);userPointService.save(userPoint);int i = 5 / 0;
}
@Test
void test2() {User user = new User();user.setId(2);user.setName("2");userService.initUser2(user);
}

2.2 @Transactional写在类上,公有调用私有

@Service
@Transactional
public class UserService2 extends ServiceImpl<UserMapper, User> {@Autowiredprivate UserPointService userPointService;public void initUser6(User user) {save(user);initPoint6(user.getId());}private void initPoint6(Integer userId) {UserPoint userPoint = new UserPoint();userPoint.setUserId(userId);userPoint.setPoint(0);userPointService.save(userPoint);int i = 6 / 0;}}
@Test
void test6() {User user = new User();user.setId(6);user.setName("6");userService2.initUser6(user);
}

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

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

相关文章

docker的安装Centos8

在CentOS 7中&#xff0c;可以使用yum安装Docker。Docker官方提供了一个yum源&#xff0c;可以用于安装Docker。以下是安装Docker的步骤&#xff1a; 卸载旧版本的Docker&#xff08;如果有&#xff09; 如果你之前安装过Docker&#xff0c;需要先卸载旧版本的Docker。执行以…

Spring之AOP

动态代理 代理模式的解释&#xff1a;为其他对象提供一种代理以控制对这个对象的访问&#xff0c;增强一个类中的某个方法&#xff0c;对程序进行扩展。 比如&#xff0c;现在存在一个UserService类&#xff1a; public class UserService {public void test() {System.out…

HBase理论与实践-基操与实践

基操 启动&#xff1a; ./bin/start-hbase.sh 连接 ./bin/hbase shell help命令 输入 help 然后 <RETURN> 可以看到一列shell命令。这里的帮助很详细&#xff0c;要注意的是表名&#xff0c;行和列需要加引号。 建表&#xff0c;查看表&#xff0c;插入数据&#…

Android开发知识学习——Kotlin进阶

文章目录 次级构造主构造器init 代码块构造属性data class相等性解构Elvis 操作符when 操作符operatorLambda循环infix 函数嵌套函数注解使用处目标函数简化函数参数默认值扩展函数类型内联函数部分禁用用内联具体化的类型参数抽象属性委托属性委托类委托 Kotlin 标准函数课后题…

矩阵的其他性质及其运算技巧

1.单位矩阵&#xff08;E&#xff09;&#xff1a;类似实数运算中的“1”&#xff0c;任何矩阵乘单位矩阵都等于该矩阵本身&#xff0c;但不同矩阵对应的单位矩阵不同。 2.矩阵乘法满足结合律和分配律&#xff0c;但不满足交换律&#xff0c;原因见三。 3.当两个不同阶矩阵相…

Docker 多阶段构建的原理及构建过程展示

Docker多阶段构建是一个优秀的技术&#xff0c;可以显著减少 Docker 镜像的大小&#xff0c;从而加快镜像的构建速度&#xff0c;并减少镜像的传输时间和存储空间。本文将详细介绍 Docker 多阶段构建的原理、用途以及示例。 Docker 多阶段构建的原理 在传统的 Docker 镜像构建…

diffusers-Tasks

https://huggingface.co/docs/diffusers/using-diffusers/unconditional_image_generationhttps://huggingface.co/docs/diffusers/using-diffusers/unconditional_image_generation1.Unconditional image generation 无条件图像生成是一个相对简单的任务。模型仅生成图像&…

redis+lua实现限流

1、需要引入Redis的maven坐标 <!--redis和 springboot集成的包 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><version>2.3.0.RELEASE</version> &…

能源化工过程-故障诊断数据集初探-田纳西-伊斯曼过程数据集

1. 田纳西-伊斯曼过程(TE)数据集简介 整个TE数据集由训练集和测试集构成,TE集中的数据由22次不同的仿真运行数据构成,TE集中每个样本都有52个观测变量。d00.dat至d21.dat为训练集样本,d00_te.dat至d21_te.dat为测试集样本。d00.dat和d00_te.dat为正常工况下的样本。d00.d…

如何开始开发一个跑腿App系统?

1. 确定需求和功能规划 开始开发之前&#xff0c;需明确系统所需的基本功能&#xff0c;包括用户注册、登录、下单、配送员匹配、订单跟踪等。这些功能需要在系统设计之初明确。 2. 技术选型 选择适合的技术栈。前端可以使用框架如React、Vue.js&#xff0c;后端可选择Node…

Vue Camera组件的使用方法

Vue Camera组件是一个用于在Web应用中使用摄像头的Vue插件。它提供了一些常见的功能和方法来控制摄像头和捕获图像或视频数据。以下是一些Vue Camera组件的常见功能和使用方法&#xff1a; 1.显示摄像头画面&#xff1a;Vue Camera组件可以直接显示摄像头的实时画面。你只需要…

创新工具箱!重塑手机页面原型设计体验

在2024年&#xff0c;随着移动设备的普及和用户对移动体验的要求不断提升&#xff0c;手机页面原型设计工具变得越来越重要。在这篇文章中&#xff0c;我将为您推荐几款在2024年非常流行且值得一试的手机页面原型设计工具。 Pixso Pixso是一款基于云端的协作设计工具&#xf…

【已解决】PPT不能转换成PDF文档怎么办?

PPT可以转换成PDF文档&#xff0c;只需要点击PPT菜单页面中的【文件】选项&#xff0c;再点击【导出】即可转换&#xff0c;如果转换时发现【导出】选项不可选&#xff0c;无法完成转换怎么办&#xff1f;以下3种方法可以试试&#xff01; 出现上面这种情况&#xff0c;我们可以…

智慧水务监控系统解决方案

智慧水务监控系统解决方案 目前&#xff0c;水质监测在各行各业中起着至关重要的作用。随着人们对环境保护和健康意识的提升&#xff0c;对水质监测的需求也日益增长。然而&#xff0c;现有的水质监测方法与需求之间存在一定的差距&#xff0c;需要通过智慧水务监控系统来解决…

模糊C均值聚类(FCM)python

目录 一、模糊C均值聚类的原理 二、不使用skfuzzy的python代码 三、 使用skfuzzy的python代码 一、模糊C均值聚类的原理 二、不使用skfuzzy的python代码 import numpy as np import random import matplotlib.pyplot as plt plt.rcParams[font.sans-serif][SimHei] plt.r…

1111 Online Map(30分)

题目翻译&#xff1a; 就是求解一个点到另一个点的最短路径。 不过由于限制条件很多&#xff0c;还得分开求两次&#xff0c;所以写起来就很繁。 题解思路&#xff1a; 可以用dijkstra或者dfs&#xff0c;用后者的话最后一个测试点可能会超时。 代码&#xff1a; dfs&…

Vins-Fusion、Vins-Mono(之前那个编译通过但是没有这个好用)

ROS的catkin_make不要修改,暂时没有理由&#xff0c;理由就是两次一个改了一个没改&#xff0c;没改的成功了以成功为准。 另外docker也没用成功&#xff0c;原本的逻辑来说&#xff0c;docker肯定不能出问题的&#xff0c;但是由于roscore通信的原因可能没有将结果显示&#x…

二叉树问题——前/中/后/层遍历问题(递归与栈)

摘要 博文主要介绍二叉树的前/中/后/层遍历(递归与栈)方法 一、前/中/后/层遍历问题 144. 二叉树的前序遍历 145. 二叉树的后序遍历 94. 二叉树的中序遍历 102. 二叉树的层序遍历 103. 二叉树的锯齿形层序遍历 二、二叉树遍历递归解析 // 前序遍历递归LC144_二叉树的前…

Spring Cloud Gateway 重写 URL

目录 1、简介 2、Spring Cloud Gateway 快速回顾 3、基于配置的 URL 重写 4、基于 DSL 的 URL 重写 5、测试 6、总结 1、简介 Spring Cloud Gateway 的常见用例是作为一个网关&#xff0c;代理一个或多个服务&#xff0c;从而为客户端提供更简单的消费方式。 本文将带你…

数学+分类讨论+构造:1102T3

http://cplusoj.com/d/senior/p/SS231102C 首先可以通过枚举逆序对点的贡献推出无解情况为 n m o d 4 > 1 n \bmod 4 > 1 nmod4>1 然后构造可以按 n m o d 3 n\bmod 3 nmod3 进行分类 #include<bits/stdc.h> using namespace std; #ifdef LOCAL#define deb…