需求:同时有多条修改数据库操作,当一条出错,所有回滚
1、mybatis事务处理(作用于持久层,即DAO)
- /**
- * 事务工厂接口,产生新的事务
- */
- TransactionFactory transactionFactory = new JdbcTransactionFactory();
- SqlSession session = sqlSessionFactory.openSession();
- //newTransaction(Connection arg, boolean autoCommit);
- Transaction newTransaction = transactionFactory.newTransaction(session.getConnection(), false);
由 newTransaction处理commit(),rollback(),close()
参考资料:
在 MyBatis 中有两种事务管理器类型(也就是 type=”[JDBC|MANAGED]”):
? JDBC – 这个配置直接简单使用了JDBC 的提交和回滚设置。它依赖于从数据源得
到的连接来管理事务范围。
? MANAGED – 这个配置几乎没做什么。它从来不提交或回滚一个连接。而它会让
容器来管理事务的整个生命周期(比如 Spring 或 JEE应用服务器的上下文)。默认
情况下它会关闭连接。然而一些容器并不希望这样,因此如果你需要从连接中停止
它,将 closeConnection 属性设置为 false。例如:
<transactionManager type="MANAGED">
<property name="closeConnection" value="false"/>
</transactionManager>
这两种事务管理器都不需要任何属性。然而它们都是类型别名,要替换使用它们,你需
要放置将你自己的类的完全限定名或类型别名,它们引用了你对 TransacFactory 接口的实现
类。
public interface TransactionFactory {
void setProperties(Properties props);
Transaction newTransaction(Connection conn, boolean autoCommit);
}
任何在 XML 中配置的属性在实例化之后将会被传递给 setProperties()方法。你的实现类
需要创建一个事务接口的实现,这个接口也很简单:
public interface Transaction {
Connection getConnection();
void commit() throws SQLException;
void rollback() throws SQLException;
void close() throws SQLException;
}
使用这两个接口,你可以完全自定义 MyBatis 对事务的处理
2、spring事务处理(作用于控制层)
spring就比较麻烦,需要用到spring编程式事务管理(我们平时用的都是声明式事务管理),具体区别google
- @Controller
- public class 控制类 {
- @Resource PlatformTransactionManager platformTransactionManager;
- public void unitDelJob(Map<String, Object> arguments) {
- DefaultTransactionDefinition def = new DefaultTransactionDefinition();
- TransactionStatus status=platformTransactionManager.getTransaction(def);
- try {
- service层业务或DAO层业务,看你的框架;
- } catch (RuntimeException e) {
- platformTransactionManager.rollback(status);
- e.printStackTrace();
- } finally {
- platformTransactionManager.commit(status);
- }
- }
- }
通过 platformTransactionManager管理事务;
这里用注解装配一下,就不自己写bean的,需要的话自己在spring装配一下吧!
相关推荐
mybatis编程实例,手把手教你学会初步的mybatis编程,里面有详细的开发步骤,有作者的联系方式,有问题的话可以随时联系,有很好的设计模式,和良好的编程习惯,相信读者阅读了会有很大的收获,绝不坑爹!...
SpringBoot+Mybatis简单的处理事务回滚
花了一晚上时间终于搞出来了Spring整合Mybatis事务回滚(Mysql数据库),控制Service层中的多次插入操作,多次操作整体是一个事务。 里面有缘嘛和jar包,资源为war包,导入即可。运行Test类中的测试代码即可。 建表...
maven spring mybatis mysql 事务管理 企业级开发
mybatis之接口编程(2)mybatis之接口编程(2)详见http://blog.csdn.net/MyheartMylove/article/details/79496791
mybatis中的事务的开启,有利于读者自己配置mybatis参数,实现自己的要求。
本文处理spring+mybatis,或springjdbc,对oracle事务不能提交的问题分析与解决
NULL 博文链接:https://bijian1013.iteye.com/blog/2314859
springboot mybatis多数据源加事务嵌套 事务之间的调用 回滚 亲测可用 定义2个库分别建立 CREATE TABLE `user` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户编号', `user_name` varchar(25) ...
spring+mybatis的编码式事务
Spring的声明式事务管理是采用AOP(Aspect-Oriented Programming,面向切面编程)实现的。在编程式事务管理中,各事务处理代码实际上是相似的,这就造成了代码重复;而且编程式事务管理会造成事务管理代码和被管理的...
Spring+mybatis的源码,同时还配置了事务管理
Spring+SpringMVC+Mybatis框架结合mysql,包含事务管理
Spring 与 各框架的组各下来,版本就特别的多,针对简单的 使用注解来管理事务的,研究了两天,要不网上写的不清楚,要不版本都很旧了,所以就是不回滚,Spring 的配置太灵活了,在加上新手,根本就不可能明白Spring...
简单的Spring+MyBastis事务控制代码,包括2个超简单的数据库表,服务代码(同时更新2个表的数据,如果后面的表的处理出错,则事务会回滚),只是简单演示了事务控制功能,其他的没有涉及。测试功能采用JUnit4.
MyBatis_3参考手册, spring2.5参考手册MyBatis_3参考手册, spring2.5参考手册MyBatis_3参考手册, spring2.5参考手册MyBatis_3参考手册, spring2.5参考手册MyBatis_3参考手册, spring2.5参考手册MyBatis_3参考手册, ...
springMVC+MYbatis框架搭建与事务管理
基于springboot+mybatis的选课管理系统基于springboot+mybatis的选课管理系统 基于springboot+mybatis的选课管理系统基于springboot+mybatis的选课管理系统 基于springboot+mybatis的选课管理系统基于springboot+...
struts2、spring与mybatis整合 包含简单登录功能 事务配置,运行JunitTestVillageArticle的modify测试。配置说明参考注释
J2EE企业级项目开发-3期(KC007) 6.5 MyBatis的事务管理和缓存机制文档.doc 学习资料 复习资料 教学资源