首页 > 其他分享 >事务的使用步骤

事务的使用步骤

时间:2023-07-01 19:33:07浏览次数:31  
标签:事务 步骤 void rollbackFor 回滚 使用 异常 Transactional

基本步骤:

开启事务(一组操作开始前,开启事务):start transaction/begin


提交事务(这组操作全部成功后,提交事务):commit;


回滚事务(中间任何一个操作出现异常,回滚事务):rollback

 

 

Spring事务管理
注解
注解:@Transactional
位置:业务(service)层的方法上、类上、接口上
作用:将当前方法交给spring进行事务管理,方法执行前,开启事务;成功执行完毕,提交事务;出现异常,回滚事务

 

事务属性-回滚
rollbackFor
默认情况下,只有出现RuntimeException才回滚异常。rollbackFor属性用于控制出现何种异常类型,回滚事务。
@Transactional (rollbackFor = Exception.class)//出现任何异常都会回滚
@Override
public void delete(Integer id) throws Exceeption {
deptMapper.deleteById(id);//删除部门
if(true){
throw new Exception("出错啦啦...");
empMapper.deleteByDeptId(id);//删除部门下的员工

事务属性-传播行为
属性值                                     含义
REQUIRED                           【默认值】需要事务,有则加入,无则创建新事务
REQUIRES_NEW                   需要新事务,无论有无,总是创建新事务
SUPPORTS                           支持事务,有则加入,无则在无事务状态中运行
NOT SUPPORTED               不支持事务,在无事务状态下运行,如果当前存在已有事务,则挂起当前事务
MANDATORY                       必须有事务,否则抛异常
NEVER                                 必须没事务,否则抛异常

例如:
@Transactional
public void a(){
userService.b();

}

@Transactional (propagation = Propagation.REQUUIRED;
public void b(){
。。。。。。。

}

try{

} finally{

     //此处的代码无论有没有异常都会执行!

}

 

标签:事务,步骤,void,rollbackFor,回滚,使用,异常,Transactional
From: https://www.cnblogs.com/shitou2023/p/17519774.html

相关文章

  • 记一次etcd全局锁使用不当导致的事故
    1、背景介绍前两天,现场的同事使用开发的程序测试时,发现日志中报etcdserver:mvcc:databasespaceexceeded,导致etcd无法连接。很奇怪,我们开发的程序只用到了etcd做程序的主备,并没有往etcd中写入大量的数据,为什么会造成etcd空间不足呢?赶紧叫现场的同事查了下etcd存储数......
  • plecs C script、prode、子系统、闭合导线画线、数据导出的简单使用
    数据导出: 闭合线画线:单击该线,按住右键即可画线。probe模块:可以将元器件拖拽进去,即可获取该元器件的相关信号输出,这样可以省去在元器件外加电压电流表等。子系统:选中要创建子系统的元器件,右键即可创建子系统。 如下输入输出接口,包括信号,电气接口即可实现子系统信号的输......
  • petalinux SDK编译及使用
    petalinuxSDK编译及使用1、编译#petalinux-build--sdk2、打包#petalinux-package--sysroot注:SDK生成在<plnx-proj>/image/linux/sdk目录3、验证#sourceimages/linux/sdk/environment-setup-aarch64-xilinx-linux#echo$CCaarch64-xilinx-linux-gcc-march=armv8-a+crc......
  • rsync配置和使用+inotify实时同步
    1,rsync基本用法1.1问题 掌握远程同步的基本操作,使用rsync完成以下任务1,将目录/boot同步到目录/todir下2,将目录/boot下的文档同步到/todir下3,在目录/boot下新增文件a.txt,删除/todir下的子目录grub2,再次同步时/todir与/boot一致1.2方案本地同步操作rsync [选项]  本地目录1......
  • Java使用joml计算机图形学库,将3D坐标旋转正交投影转为2D坐标
    最近遇到了一个困扰我许久的难题,现将解决方案分享出来由于我们的项目侧重点在前端绘图,导致了前后端工作量不协调,我后端接口很快就能写完,而前端一个图要画好久,领导见状将前端的任务分到后端一部分用Java代码来实现,然后给前端提供接口而我接到的任务就是将Echarts中绘制三维图形的......
  • js 使用get 接口如何传递 特殊字符给后端,类似 # 等特殊字符
    今天开发遇到个问题。用户输入了#怎么把文本完整的传递给后端如果直接传输就会出现#之后的东西全都没有,解决方法如下:1,使用其他特殊字符代替,使用replaceAll  //使用replaceAll替换所有#,然后后端再替换回来letnewStr=newQue.replaceAll('#','&')缺点,会......
  • Swift将项目里色值和字号归纳整理方便使用
    对于项目中的色值和字号可以通过定义枚举统一管理1.色值先创建一个和我们平时放图片同类的资源文件,这样也方便我们适配暗黑模式,如下2.建好以后如下,添加我们想要的色值,可以同时设暗黑模式下的色值3.然后定义色值的枚举,如下publicenumAPPColor{staticlettheme=UI......
  • Markdown 使用diff高亮代码区某行数据
    使用diff标明代码区即可如:```difffunmain(){+say("")return""}funmain(){-say("")return""}效果:funmain(){+say("")return""}funmain(){-say("&quo......
  • Allure使用教程 - 官方文档汉化
    Allure测试报告目录Allure测试报告安装LinuxMacOSXWindows手动下载&安装安装pytest-allure插件快速入门allure特性可以在html报告中,添加用例描述、附件等信息,比如:1、@allure.feature(功能名称)2、@allure.story(子功能名称)3、@allure.title(测试标题)4、@allure.description(用例描......
  • 爬虫-Scrapy框架安装使用2
    Scrapy框架其他方法功能集合笔记使用LinkExtractor提取链接使用Selectorimportscrapyfrombs4importBeautifulSoupclassBookSpider(scrapy.Spider):name="book"allowed_domains=["books.toscrape.com"]start_urls=["http://books.t......