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) 在网站开发 ...
随机推荐
- js产生任意2个区间内的随机整数
var code = myRound(30,100); function myRound(begin,end){ var num = Math.round(Math.random()*(end-beg ...
- Verilog基础入门——简单的语句块编写(一)
[题干] [代码] module top_module ( input in, output out ); assign out = ~in; endmodule 简单的实现一个非门
- golang 爬取百度贴吧绝地求生页面
package main import ( "github.com/antchfx/htmlquery" "io" "net/http" & ...
- socket php
$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP); socket_bind($socket,'0.0.0.0',6666); while(tru ...
- 第十九章 DHCP原理介绍
一.为什么使用DHCP 1.手动为局域网中大量主机配置IP地址.掩码.网关等参数的工作繁琐,容易出错 2.DHCP可以自动为局域网中主机完成TCP/IP协议配置 3.DHCP自动配置避免了IP地址冲突 ...
- D - 活动选择
Description 学校的大学生艺术中心周日将面向全校各个学院的学生社团开放,但活动中心同时只能供一个社团活动使用,并且每一个社团活动开始后都不能中断.现在各个社团都提交了他们使用该中心的活动计划 ...
- JDK源码阅读-------自学笔记(二十四)(java.util.LinkedList 再探 自定义讲解)
一.实现get方法 1.一般思维实现思路 1).将对象的值放入一个中间变量中. 2).遍历索引值,将中间量的下一个元素赋值给中间量. 3).返回中间量中的元素值. 4).示意图 get(2),传入角标 ...
- JAVA 基于Jusup爬虫
java爬虫核心:httpclient slf4j jsoup slf4j 配置文件log4j.properties log4j.rootlogger=DEBUG,A1log4j.logger.cn. ...
- 没事学学KVM(四)虚拟机基础管理
上次学完虚机的创建.开关机.备份配置文件等,今天学学其他几个常用的虚机管理命令: 1.重命名 方法一:virsh domrename old-name new-name virsh # list I ...
- react-native中textInput在androidTV上的焦点处理(坑篇)
react-native中,开发androidTV输入框的焦点处理. 复述流程: 安卓TV上,无法通过上下左右键,以及遥控器的上下左右来获取输入框焦点. 原因: 脸书的锅,但没修,这里官方的说法,Te ...