• 引入事务管理器
@Autowired
TransactionTemplate transactionTemplate;@Autowired
PlatformTransactionManager transactionManager;

使用方式1:

boolean result = transactionTemplate.execute(new TransactionCallback<Boolean>() {@Overridepublic Boolean doInTransaction(TransactionStatus status) {try {// TODO something} catch (Exception e) {//TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); //手动开启事务回滚
            status.setRollbackOnly();logger.error(e.getMessage(), e);return false;}return true;}
});

使用方式2:

/*** 定义事务*/
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setReadOnly(false);
//隔离级别,-1表示使用数据库默认级别
def.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED);
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
TransactionStatus status = transactionManager.getTransaction(def);
try {//TODO something
     transactionManager.commit(status);
} catch (Exception e) {transactionManager.rollback(status);throw new InvoiceApplyException("异常失败");
}

使用方式3:

SqlSession sqlSession = null;
try {sqlSession = otInvSqlSessionFactory.openSession(ExecutorType.BATCH, true);XXXXXMapper xXxxMapper = sqlSession.getMapper(XXXXXMapper.class);    Savepoint savepointStep1 = sqlSession.getConnection().setSavepoint();    sqlSession.getConnection().rollback(savepointStep1);sqlSession.commit();
}catch(Exception e){if (null != otInvSqlSession) {sqlSession.rollback(true);logger.error("数据回滚", e);}
}finally {if (null != sqlSession) {sqlSession.clearCache();sqlSession.close();}
}

转载于:https://www.cnblogs.com/zhjh256/p/10739887.html

Spring中三种编程式事务的使用相关推荐

  1. Spring中两种编程式事务管理

    Spring中两种编程式事务管理 在代码中显示调用beginTransaction,commit,rollback等与事务处理相关的方法,这就是编程式事务管理,当只有少数事务操作时,编程式事务管理才比 ...

  2. Spring的4种事务管理(1种编程式事务+三种声明事务)

    2019独角兽企业重金招聘Python工程师标准>>> Spring的4种事务管理(1种编程式事务+三种声明事务) 一.Spring事务的介绍 二.编程式事务xml的配置 注入后直接 ...

  3. Spring中三种配置Bean的方式

    1.使用xml配置文件 由Spring Framework本身决定,此处不详细说. 2.使用Java注解的配置 如果一个类使用了@Service,那么此类将自动注册成一个bean,不需要再在appli ...

  4. 事务声明声明式事务和编程式事务区别

    事务声明声明式事务和编程式事务区别 1.编程式事务: 所谓编程式事务指的是通过编码方式实现事务,即类似于JDBC编程实现事务管理.管理使用TransactionTemplate或者直接使用底层的Pla ...

  5. spring 的4种事务管理(1种编程式+3种声明式)

    见:http://blog.csdn.net/sinat_25926481/article/details/48208619 Spring的4种事务管理(1种编程式事务+三种声明事务) 一.Sprin ...

  6. 全面分析 Spring 的编程式事务管理及声明式事务管理(转)

    摘要 Spring 的事务管理是 Spring 框架中一个比较重要的知识点,该知识点本身并不复杂,只是由于其比较灵活,导致初学者很难把握.本教程从基础知识开始,详细分析了 Spring 事务管理的使用 ...

  7. 全面分析 Spring 的编程式事务管理及声明式事务管理--转

    开始之前 关于本教程 本教程将深入讲解 Spring 简单而强大的事务管理功能,包括编程式事务和声明式事务.通过对本教程的学习,您将能够理解 Spring 事务管理的本质,并灵活运用之. 先决条件 本 ...

  8. Spring笔记(4) - Spring的编程式事务和声明式事务详解

    一.背景 事务管理对于企业应用而言至关重要.它保证了用户的每一次操作都是可靠的,即便出现了异常的访问情况,也不至于破坏后台数据的完整性.就像银行的自助取款机,通常都能正常为客户服务,但是也难免遇到操作 ...

  9. 全面分析 Spring 的编程式事务管理及声明式事务管理

    转自:http://www.open-open.com/lib/view/open1414310646012.html 关于本教程 本教程将深切讲授 Spring 庞杂而丁壮夜的事务治理功用,包括编程 ...

  10. Spring的三种事务控制

    Spring的三种方式的事务控制 1:基于编程式的事务控制 1.1:编程式事务控制相关对象 PlatformTransactionManager接口是spring的事务管理器,他里面提供了我们常用的操 ...

最新文章

  1. 按摩加快肌肉修复有科学依据了,哈佛大学研究成果登Science子刊
  2. 北京某公司.NET面试题
  3. 每个程序员都必读的12篇文章
  4. python模拟登录获取Cookie
  5. group by rollup | cube 学习
  6. 第一次作业 四班15
  7. GitHub 引入缺陷和Pull Request 模版,并支持直接上传文件
  8. oracle 取awr报告,Oracle生成awr报告
  9. 软件设计中的可用性和可用性测试
  10. 计算机网络单向ping通,单向可Ping通的原因与原理
  11. 一寸照片制作—Photoshop学习(1)
  12. ODC:在线深度聚类的无监督表示学习
  13. 白杨SEO:软文怎么写?怎么才能写好推广软文,有哪些技巧?
  14. php 接收复杂json,php解析复杂json的实例 - 火车api的应用
  15. OLED12864裸屏驱动电路
  16. easyconnect 通过Vmware虚拟机挂ccproxy变非全局代理
  17. Cadence创建异形焊盘教程(详细操作)
  18. 腾讯——云计算从业者认证系列1
  19. 注册服务时,id和ref是什么
  20. 苹果生产日期对照表2020_苹果官方确认:部分批次AirPodsPro会有声音故障问题

热门文章

  1. 数据结构和算法——树结构(二叉树的创建、查找、遍历和删除)
  2. 图论之单源最短路径问题
  3. LeetCode最长回文子串
  4. -1交替c语言代码,排序(1)---------选择排序(C语言实现)(示例代码)
  5. java static 初始化顺序_java static 初始化顺序语法并不正确
  6. BIO、NIO和AIO的区别简述
  7. docker 中 NGINX+PHP+MYSQL+REDIS+Elasticsearch 环境搭建 (linux系统)
  8. 阶段1 语言基础+高级_1-3-Java语言高级_07-网络编程_第1节 网络通信概述_3_网络通信协议分类...
  9. Centos 7 Mysql 最大连接数超了问题解决
  10. 使用deque模块固定队列长度,用headq模块来查找最大或最小的N个元素以及实现一个优先级排序的队列...