springboot学习3事务控制
springboot学习3事务控制
spring的事务控制本质上是通过aop实现的。
在springboot中使用时,可以通过注解@Transactional进行类或者方法级别的事务控制,也可以自己通过spring提供的事务管理器手动控制事务
一、 @Transactional注解进行进行类或者方法级别的事务控制
不需要进行特别的设置,按照正常的配置整合spring和mybatis后,在需要进行事务控制的类上或者方法上加上
@Transactional注解,即可对其进行事务控制。
二、手动控制事务
当需要在一个方法的内部进行事务控制时,就需要利用spring提供的事务管理器来手动控制。在方法所在的类中注入事务管理器,然后在方法中需要的位置利用事务管理器进行控制:开启事务,提交事务,回滚事务
@Autowired
PlatformTransactionManager platformTransactionManager;
@Autowired
TransactionDefinition transactionDefinition;
public void testTransaction() {
//开启事务
TransactionStatus transactionStatus = platformTransactionManager.getTransaction(transactionDefinition);
try {
CategoryInfo categoryInfo1=new CategoryInfo();
categoryInfo1.setName("分类1");
categoryDataDao.add(categoryInfo1);
//模拟发生异常,事务回滚后应该数据库两条记录都没有
int i=1/0;
CategoryInfo categoryInfo2=new CategoryInfo();
categoryInfo2.setName("分类2");
categoryDataDao.add(categoryInfo2);
//提交事务
platformTransactionManager.commit(transactionStatus);
} catch (Exception e) {
logger.error("发生异常事务回滚");
platformTransactionManager.rollback(transactionStatus);
}
}
springboot学习3事务控制的更多相关文章
- SpringBoot系列: JdbcTemplate 事务控制
============================Spring JdbcTemplate 事务控制============================之前使用 JDBC API 操作, 经常 ...
- Redis学习笔记-事务控制篇(Centos7)
一.事务控制 1.简单事务控制 redis可以使用mult命令将之后的命令都存放在队列中,只有使用exec命令时才全部执行. 127.0.0.1:6379> multi OK 127.0.0.1 ...
- springBoot service层 事务控制
springBoot使用事物比较简单,在Application启动类s上添加@EnableTransactionManagement注解,然后在service层的方法上添加@Transactional ...
- SpringBoot系列七:SpringBoot 整合 MyBatis(配置 druid 数据源、配置 MyBatis、事务控制、druid 监控)
1.概念:SpringBoot 整合 MyBatis 2.背景 SpringBoot 得到最终效果是一个简化到极致的 WEB 开发,但是只要牵扯到 WEB 开发,就绝对不可能缺少数据层操作,所有的开发 ...
- Hibernate学习笔记(三)—— Hibernate的事务控制
Hibernate是对JDBC的轻量级封装,其主要功能是操作数据库.在操作数据库过程中,经常会遇到事务处理的问题,接下来就来介绍Hibernate中的事务管理. 在学习Hibernate中的事务处理之 ...
- SpringBoot整合Mybatis,并实现事务控制
SpringBoot整合Mybatis,并实现事务控制 1. 在pom文件里添加相关maven文件 <parent> <groupId>org.springframework. ...
- 大数据学习day35----flume01-------1 agent(关于agent的一些问题),2 event,3 有关agent和event的一些问题,4 transaction(事务控制机制),5 flume安装 6.Flume入门案例
具体见文档,以下只是简单笔记(内容不全) 1.agent Flume中最核心的角色是agent,flume采集系统就是由一个个agent连接起来所形成的一个或简单或复杂的数据传输通道.对于每一个Age ...
- 看门外汉如何实现:C#操作 MongoDB基本CURD的事务控制
第一部分 基本设计 目前最新版本的C#驱动MongoDB-CSharpDriver-2.2.3,比之前的版本更新比较大,在网上很难找到这个版本的相关C#操作资料,以下都是个人自发研究.测试的,如有雷同 ...
- Springboot学习03-SpringMVC自动配置
Springboot学习03-SpringMVC自动配置 前言 在SpringBoot官网对于SpringMVCde 自动配置介绍 1-原文介绍如下: Spring MVC Auto-configur ...
随机推荐
- 2019年ipa发布苹果应用商店审核指南
https://baijiahao.baidu.com/s?id=1623886553597961077&wfr=spider&for=pc ipa 发布审核指南 说明: 本指南为初版 ...
- https和http的主要区别
HTTPS和HTTP的区别主要如下: 1.https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用. 2.http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输 ...
- 吴裕雄--天生自然ORACLE数据库学习笔记:数据导出与导入
create directory dump_dir as 'd:\dump'; grant read,write on directory dump_dir to scott; --在cmd下 exp ...
- 都客仿站高手已注册旗舰版V3.1
链接:https://pan.baidu.com/s/1R5ldFDjekuXmEp42-8SQSQ 提取码:gkm9
- Duilib XML嵌套/自定义控件
转载:https://www.jianshu.com/p/0fe8610dcc8d // https://github.com/Washington-DC/Duilib-ListView //这是 ...
- table左边固定-底部横向滚动条-demo
图: 代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...
- CSP2019 Emiya 家今天的饭
Description: 有 \(n\) 中烹饪方法和 \(m\) 种食材,要求: 至少做一种菜 所有菜的烹饪方法各不相同 同种食材的菜的数量不能超过总菜数的一半 求做菜的方案数. Solution1 ...
- 在win10中启动redis
1.输入命令"redis-server.exe redis.windows.conf ",按回车键, 2.输入“redis-cli.exe -h 127.0.0.1 -p 6379 ...
- HIHOcoder编程总结
[Offer收割]编程练习赛44 对于第一题题目1 : 扫雷游戏,首先要想清楚思路,虽然是暴力算法,但是这八个方向要自己把坐标写正确,不要慌乱,自己写的时候就写错了一个,第二个就是判断的时候,j + ...
- Codeforces1304F.Animal Observation
分析一下得知是DP问题,时间复杂度符合,设dp[i][j]为从第i天开始,第j个位置能得到的最大值,其有三种转移状态 1.与上一天的选择有重合 2.与上一天的选择没有重合,且上一天的选择在左边 3.与 ...