spring中的事务有两种方式
数据库的事务通用执行流程:
1.事务开启
2.//业务逻辑处理 --》在这期间可以对异常进行捕获,然后回滚,也可以提前提交事务
3.事务提交
用了框架就省略了事务的开启和提交代码
1种是我们常用的声明式事务,如注解,或者配置文件配置的。
如:
@Transactional(rollbackFor = Exception.class)
public String insertOrUpdateByOnce(EducationInfo educationInfo) { //这里写核心业务方法
//dosomething return "success"; }
2种是编程式事务,如 TransactionTemplate 类的使用。
如:
@Override
public Msg addEmployContractUser(String[] user_codes) {
// TODO Auto-generated method stub
Msg msg = transactionTemplate.execute(new TransactionCallback<Msg>() {
@Override
public Msg doInTransaction(TransactionStatus status) {
Msg msgShow = new Msg(); int ret = 0;
employContractMapper.updateEmploySeq(user_codes);
ret = employContractMapper.addEmployContractUser(user_codes); if(ret == 0){
ret = employContractMapper.addEmployContractExists(user_codes);
}
if(ret>0){
msgShow.setMsg("增加成功");
return msgShow;
}else {
status.setRollbackOnly();
msgShow.setMsg("最新劳务用工合同信息已存在列表,无需增加");
return msgShow;
}} });
return msg;
}
从中可以看到编程式事务更加灵活,想回滚随时都可以的,但是声明式事务,只有在捕获到异常才会回滚。
spring中的事务有两种方式的更多相关文章
- DJango中开启事务的两种方式
目录 Django中开启事务的两种方式 第一种 第二种 Django中开启事务的两种方式 第一种 from django.db import transaction with transaction. ...
- mybatis中批量插入的两种方式(高效插入)
MyBatis简介 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用 ...
- spring接收json字符串的两种方式
一.前言 前几天遇到一个问题,前端H5调用我的springboot一个接口(post方式,@RequestParameter接收参数),传入的参数接收不到.自己测试接口时使用postman的form- ...
- Spring Boot配置过滤器的两种方式
过滤器(Filter)是Servlet中常用的技术,可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截,常用的场景有登录校验.权限控制.敏感词过滤等,下面介绍下Spring Boot配置过 ...
- Spring Boot 整合 Shiro ,两种方式全总结!
在 Spring Boot 中做权限管理,一般来说,主流的方案是 Spring Security ,但是,仅仅从技术角度来说,也可以使用 Shiro. 今天松哥就来和大家聊聊 Spring Boot ...
- linux内核分析作业4:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
系统调用:库函数封装了系统调用,通过库函数和系统调用打交道 用户态:低级别执行状态,代码的掌控范围会受到限制. 内核态:高执行级别,代码可移植性特权指令,访问任意物理地址 为什么划分级别:如果全部特权 ...
- Java中HashMap遍历的两种方式
Java中HashMap遍历的两种方式 转]Java中HashMap遍历的两种方式原文地址: http://www.javaweb.cc/language/java/032291.shtml 第一种: ...
- jQuery中开发插件的两种方式
jQuery中开发插件的两种方式(附Demo) 做web开发的基本上都会用到jQuery,jQuery插件开发两种方式:一种是类扩展的方式开发插件,jQuery添加新的全局函数(jQuery的全局函数 ...
- web.config文件中配置数据库连接的两种方式
web.config文件中配置数据库连接的两种方式 标签: 数据库webconfig 2015-04-28 18:18 31590人阅读 评论(1)收藏举报 分类: 数据库(74) 在网站开发 ...
随机推荐
- 使用python编写正逆序乘法表
# 99乘法表 # 顺序 for i in range(1,10): n = 1 while n <= i: print('{}x{}={}'.format(n,i,n*i),end=' ') ...
- 新手学习C语言/C++编程你所必须要了解的知识!从计算机原理开始!
C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...
- spring boot: 用redis的消息订阅功能更新应用内的caffeine本地缓存(spring boot 2.3.2)
一,为什么要更新caffeine缓存? 1,caffeine缓存的优点和缺点 生产环境中,caffeine缓存是我们在应用中使用的本地缓存, 它的优势在于存在于应用内,访问速度最快,通常都不到1ms就 ...
- phpstorm配置sftp自动上传
勾选自动上传 手动上传 qq_23049573 原创文章 14获赞 4访问量 2万+ 关注 私信
- 1.opengl绘制三角形
顶点数组对象:Vertex Array Object,VAO,用于存储顶点状态配置信息,每当界面刷新时,则通过VAO进行绘制. 顶点缓冲对象:Vertex Buffer Object,VBO,通过VB ...
- Spring Aop 详解二
这是Spring Aop的第二篇,案例代码很详解,可以查看https://gitee.com/haimama/java-study/tree/master/spring-aop-demo. 阅读前,建 ...
- Anderson《空气动力学基础》5th读书笔记 第4记——黏性流动入门
目录 一.边界层的概念 二.边界层的产生原因 三.剪切力的公式 四.温度分布情况 五.雷诺数与层流.湍流 一.边界层的概念 我们先来介绍边界层的概念(边界层正是黏性流动的产物),边界层是紧挨物体的薄层 ...
- .net core 3.1 vs2019报HTTP Error 500.30 - ANCM In-Process Start Failure
vs启动报此错误的话查看自己的程序是3.1.1还是3.1.2.解决防范安装高版本的重启
- nrm切换npm源
使用 nrm 提供了一些最常用的npm包镜像地址,能够让我们快速的切换安装包时候的服务器地址: 全局安装nrm包 npm i nrm -g 查看当前所有可用的镜像源地址以及当前所使用的镜像源地址 nr ...
- Spark执行失败时的一个错误分析
错误分析 堆栈信息中有一个错误信息:Job aborted due to stage failure: Task 1 in stage 2.0 failed 4 times, most recent ...