spring事物的管理方式
Spring事务配置的五种方式
转载大神总结:
https://blog.csdn.net/xuanjiewu/article/details/51604967;
自己总结:这里只总结spring编程时事物管理
附上源码加注释
两个方法放到一个类中,直接写你的逻辑调用即可。
/**
* jdbc批量处理插入操作
* @param list
* @return
*/
public int setOneExtractSetTwoTemplate(List<TwoQuotation> list){
List<List<Object>> listListTwo = new ArrayList<List<Object>>();
String sqlTwo ="";
List<List<Object>> listList = new ArrayList<List<Object>>();
for (int i = 0; i < list.size(); i++) {
List<Object> list1 = new ArrayList<Object>();
list1.add(list.get(i).getProjId());
.............
listList.add(list1);
}
String sql ="INSERT INTO DOC_SXJJHDXM_PBJL_repeated (docid,zbcs, bdh, bdname,"+
"tbdwname,wzbm,product, ggxh,"+
"jldw, dwnum, zzdj, wzth, ysccj, ppxh, chandi, taxes, tjsx, gys_uuid,"+
" wz_uuid,"+
"remark, repeate, address, starttime, endtime )"+
"VALUES"+
"(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
String flag = collectiveTransaction(listList, sql, listListTwo, sqlTwo);
if(flag.equals("yes")){
return 1;//代表成功
}
return 0;//0代表失败
}
/*parms
*
* 批量操作数据*/
@SuppressWarnings("unchecked")
public String collectiveTransaction(final List<List<Object>> listList,String sql,final List<List<Object>> listListTwo,
String sqlTwo) {
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED);
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);//事务的隔离级别,开启新事物
DataSourceTransactionManager transactionManager = new DataSourceTransactionManager(jdbcTemplate.getDataSource());
TransactionStatus status = transactionManager.getTransaction(def);//获得事务的状态
String flag = "yes";
try{
if(listListTwo.size()>0){
jdbcTemplate.execute(sqlTwo, new PreparedStatementCallback() {
public Object doInPreparedStatement(PreparedStatement ps) throws SQLException {
for (List<Object> list : listListTwo) {
for (int i = 0; i < list.size(); i++) {
ps.setString(i+1, (String) list.get(i));
}
ps.addBatch();
}
ps.executeBatch(); // 数据不会持久化到数据库中
return null ;
}
});
}
if(listList.size()>0){
jdbcTemplate.execute(sql, new PreparedStatementCallback() {
public Object doInPreparedStatement(PreparedStatement ps) throws SQLException {
for (List<Object> list : listList) {
for (int i = 0; i < list.size(); i++) {
ps.setString(i+1, (String) list.get(i));
}
ps.addBatch();
}
ps.executeBatch(); // 数据不会持久化到数据库中
return null ;
}
});
}
transactionManager.commit(status); // 持久化所有数据
}catch (Exception e){
transactionManager.rollback(status); // 所有的数据都会rollback
e.printStackTrace();
flag = "no";
}
return flag;
}

spring事物的管理方式的更多相关文章
- Spring框架——事务管理方式搭建一个小的项目
学习Spring框架,通过事务管理的方式搭建一个小的项目,该项目可以查询对数据库中的图书库存数量进行修改. 首先,使用MVC分层的设计模式思想搭建项目目录结构. 此部分代码源码之中都有相关注释,所以尽 ...
- Spring管理事物两种方式
Spring管理事物两种方式 1. 编程式事物管理(在开发中不经常使用) 使用步骤 1. 配置数据库事物管理 DataSourceTransactionManager <!--配置事物管理器-- ...
- Spring事物管理--相关要点及配置事物管理器
事务的四大特征 1.原子性:一个事务中所有对数据库的操作是一个不可分割的操作序列,要么全做要么全不做 2.一致性:数据不会因为事务的执行而遭到破坏 3.隔离性:一个事物的执行,不受其他事务的干扰,即并 ...
- java陷阱之spring事物管理导致锁无效
模拟锁情况无效 1.创建一个表 SET NAMES utf8mb4; ; DROP TABLE IF EXISTS `demo`; CREATE TABLE `demo` ( `id` ) NOT N ...
- Spring事物管理简介 (转)
一.事物1.什么是事物 事物指的是逻辑上的一组操作,这组操作要么全部成功,要么全部失败 2.事物的特性 原子性:事物是一个不可分割的工作单位,事物中的操作要么都发生,要么都不发生 一致性:事物前后数据 ...
- spring 事物(三)—— 声明式事务管理详解
spring的事务处理分为两种: 1.编程式事务:在程序中控制事务开始,执行和提交:详情请点此跳转: 2.声明式事务:在Spring配置文件中对事务进行配置,无须在程序中写代码:(建议使用) 我对&q ...
- Spring事物管理机制简单学习
首先spring并不直接管理事物,而是提供了多种事物管理器,他们将事务管理的职责委托给Hibernate或者JTA等持久化机制所提供的相关平台框架的事务来实现. Spring管理事物的接口是org.s ...
- 尚硅谷spring 事物管理
接下来我们重点来学习spring中的事务管理 接下来我们通过代码来实现 spring实现事物我们采用aop的方式来实现 获得连接和手动设置事物相当于@before标注的前置通知,conn.commit ...
- MyBatis6:MyBatis集成Spring事物管理(下篇)
前言 前一篇文章<MyBatis5:MyBatis集成Spring事物管理(上篇)>复习了MyBatis的基本使用以及使用Spring管理MyBatis的事物的做法,本文的目的是在这个的基 ...
随机推荐
- bzoj 4031: 小Z的房间 矩阵树定理
bzoj 4031: 小Z的房间 矩阵树定理 题目: 你突然有了一个大房子,房子里面有一些房间.事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子.在一开始的时 ...
- 转 Django根据现有数据库,自动生成models模型文件
Django引入外部数据库还是比较方便的,步骤如下 : 创建一个项目,修改seting文件,在setting里面设置你要连接的数据库类型和连接名称,地址之类,和创建新项目的时候一致 运行下面代码可以自 ...
- HUD1455:Sticks
Sticks Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- HDOJ1075字典翻译(map应用)
#include<iostream> #include<cstdio> #include<map> #include<string> #include& ...
- JZ2440 启动NFS网络文件系统_初试led驱动
http://blog.csdn.net/emdfans/article/details/12260969 u-boot ---> q 修改bootargs变量 默认: bootargs=noi ...
- 恢复到版本并销毁之后的git提交记录
git reset --hard HEAD~1(或者你想要的版本号) git push --force # 千万注意:此操作无法恢复
- Dialog 自定义使用1
一: 布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:andr ...
- Flask07 Jinja2模板测试器、控制语句IF/FOR、变量/块 赋值、作用域、块级作用域
1 测试器及其使用 在模板中的 {{}} 可以书写测试器,格式如下 {{ 变量 is 测试器名称 }} 1.1 在python中导入 Jinja2 的模板 from jinja2 import te ...
- CSS定位机制总结
1,CSS 有三种基本的定位机制:普通流.浮动和绝对定位.除非专门指定,否则所有框都在普通流中定位.2,普通流定位:块级框从上到下一个接一个地排列,框之间的垂直距离是由框的垂直外边距计算出来.行内框在 ...
- sublime text 3安装及使用
Sublime Text 3中文版是一款跨平台代码编辑器(Code Editor)软件.Sublime Text 3既可以编写代码还可以编辑文本,是程序员必不可少的工具,相比之前的版本Sublime ...