首页 > 编程语言 >TransactionTemplate编程式事务的使用

TransactionTemplate编程式事务的使用

时间:2024-05-27 16:12:18浏览次数:14  
标签:事务管理 回滚 编程 userMapper 事务 TransactionTemplate

TransactionTemplate

在Spring框架中,TransactionTemplate是一个用于编程式事务管理的工具类。它提供了一种在代码中显式控制事务边界的方式,使开发人员可以在方法级别定义事务的开始和结束点。TransactionTemplate简化了事务管理的操作,同时提供了一些附加功能,如事务传播行为和异常回滚。

TransactionTemplate提供了execute()方法,该方法接受一个TransactionCallback作为参数,并在事务的上下文中执行其中的代码。

TransactionCallback 是一个接口,调用execute()方法的时候可以使用匿名内部类的方式,也可以使用它提供的实现类,本次采用实现类的方式。

image

TransactionCallbackWithoutResult 是 Spring 框架中的一个接口,用于在编程式事务管理中执行一段事务性操作。它允许您定义一个不返回结果的回调函数,在这个函数中执行数据库操作,并且支持事务的提交和回滚。

下列是一个demo,用于实现事务的回滚。

 @GetMapping("test")
    public List<User> test(){
        User zgf = userMapper.selectById(1);
        User zsf = userMapper.selectById(2);
        transactionTemplate.execute(new TransactionCallbackWithoutResult(){
            @Override
            protected void doInTransactionWithoutResult(TransactionStatus status) {
                try{
                    zgf.setAge(30);
                    zsf.setAge(30);
                    int i = 10 / 0;
                    userMapper.updateById(zgf);
                    userMapper.updateById(zsf);
                }catch (Exception e){
                    System.out.println("事务回滚");
                    status.setRollbackOnly();
                }
            }
        });
        return userMapper.selectList(null);
    }

标签:事务管理,回滚,编程,userMapper,事务,TransactionTemplate
From: https://www.cnblogs.com/zgf123/p/18215779

相关文章

  • 全面详解Java并发编程:从基础到高级应用
    全面详解Java并发编程:从基础到高级应用Java并发编程是Java开发中一个非常重要的领域,涉及多线程编程技术,用于提高程序的性能和响应能力。并发编程在多核处理器上特别有用,因为它可以同时执行多个任务,从而提高应用程序的效率。以下是对Java并发编程的详细讲解,涵盖基本概念、线......
  • 图形化编程题:根据身份证号码识别是否优先选择火车下铺,Scratch编程实现代码--电子学会2
    今天做了一下2024.3的电子学会的2道二级考级题,三道三级考级题,2道四级考级题。整体感觉越来越靠近真实的做软件了。里面应用到排序、自定义模块(这相当于c++的函数,java的方法)、校验输入是否全是数字、标识符等,感觉这次编程题整体难度比之前要提升了一丢丢。按理像我这种写了10......
  • Java实验六: Java流式编程与网络程序设计(头歌)
    一、字节输入/输出流实现数据的保存和读取packagestep1;importjava.io.*;importjava.util.*;publicclassSortArray{publicstaticvoidmain(String[]args){/**********Begin**********///创建保存整型数据的数组(数组大小10)......
  • 1.说说你学过的编程语言。2.你了解过的编程工具。
    1.我学过的编程语言有java和c语言。Java的优势:跨平台性:Java的“一次编写,到处运行”的特性使其具有出色的跨平台性。这主要得益于Java虚拟机(JVM)的存在,它使得Java程序可以在任何支持JVM的平台上运行。自动内存管理:Java提供了垃圾回收机制,自动管理内存,减少了程序员手动管理内存的......
  • Java EE-Spring AOP 面向切面编程
    SpringAOPhttps://www.cnblogs.com/joy99/p/10941543.html超级详细版:Chapter 6. 使用Spring进行面向切面编程(AOP)AOP原理面向切面(AspectOrientProgramming)面向切面编程,是面向对象编程(OOP)的一种补充。在Java程序自上而下处理主业务时,也会经常处理一些和主......
  • Python编程入门:从零开始掌握基础
    Python编程入门:从零开始掌握基础Python是一门简单易学但功能强大的编程语言。它广泛应用于数据科学、机器学习、web开发、自动化任务等领域。本系列文章将带你从零开始学习Python,逐步掌握这门语言的基础知识。本文是系列的第一篇,涵盖Python的基本语法、变量和数据类型等内......
  • 如何在Spring中配置声明式事务?
    在Spring中配置声明式事务,主要有两种方式:通过XML配置文件和使用注解。声明式事务让你能够将事务管理代码从业务逻辑代码中分离出来,通过声明的方式来管理事务,使得代码更加简洁,易于维护。下面我将分别展示这两种方式的配置方法:通过XML配置文件配置DataSource:首先,您需要配......
  • Spring支持哪些事务管理类型?
    Spring框架支持两种主要类型的事务管理:编程式事务管理声明式事务管理这两种事务管理各有优缺点,可以根据具体需求和偏好来选择使用。1.编程式事务管理编程式事务管理意味着你必须在代码中显式管理事务。这通常是通过编码来实现的,即使用Spring框架提供的TransactionTempl......
  • 搜索引擎ElasticSearch18_ElasticSearch编程操作5
    一、创建工程,导入坐标pom.xml坐标<dependencies><dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>5.6.8</version></dependency>......
  • shell编程之循环语句与函数
    一、for循环语句        在实际工作中,经常会遇到某项任务需要多次执行的情况,而每次执行时仅仅是处理的对象不一样,其他命令相同。例如,根据通讯录中的姓名列表创建系统账号,根据服务器清单检查各主机的存活状态,根据IP地址黑名单设置拒绝访问的防火墙策略等。    ......