需求:同时有多条修改数据库操作,当一条出错,所有回滚
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中,SqlSession是执行SQL操作的主要接口,它提供了插入、更新、删除和查询等方法。而SqlSessionFactory则负责创建SqlSession...
MyBatis的配置一般从一个XML文件开始,其中配置了数据库连接信息、事务管理器等核心设置。MyBatis使用SqlSessionFactory作为SQL会话的工厂,可以从中获取SqlSession实例,而SqlSessionFactory则可以通过...
### MyBatis 3.4.6 中文参考知识点概览 #### 一、MyBatis简介 **MyBatis** 是一款优秀的持久层框架,它支持定制化的 SQL 查询、存储过程以及高级映射功能。相比传统的 JDBC 编程方式,MyBatis 可以大大简化开发...
MyBatis的事务管理可以通过编程式和声明式两种方式实现,声明式通常结合Spring框架进行配置。 12. **插件机制** MyBatis允许用户自定义插件,通过拦截器模式对SqlSession的方法进行增强,如性能分析、日志记录等...
Spring框架提供了SpringMVC和Mybatis的整合方式,如使用Spring的声明式事务管理,可以在Spring配置中统一管理事务的开始、提交、回滚。同时,Spring还可以通过@Autowired注解自动注入Mybatis的Mapper接口,简化了...
myBatis支持编程式事务管理和声明式事务管理。编程式事务管理通过SqlSession对象手动提交或回滚事务,声明式事务管理则依赖于Spring等容器来管理事务的开始、提交和回滚。 **9. 缓存机制** myBatis内置了两级缓存,...
Spring还提供了AOP(面向切面编程)功能,用于实现如日志、事务管理等跨切面的逻辑。在本新闻管理系统中,Spring可能会定义各种服务接口和其实现,以及数据库连接池等配置。 SpringMVC是Spring框架的一部分,专门...
MyBatis支持编程式和声明式事务管理。编程式事务管理需要在代码中显式控制事务的开始、提交和回滚;声明式事务管理则依赖于容器如Spring,可以在配置文件中声明事务边界。 9. **缓存机制**: MyBatis提供了本地...
Spring是一个全面的后端开发框架,提供了依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-Oriented Programming, AOP)等核心功能,同时也支持事务管理、数据访问、Web MVC等。Spring框架简化了Java...
- MyBatis-3-config.xml:MyBatis的全局配置文件,包含系统运行环境的配置、数据库连接池、事务管理器、映射器等配置信息。 5. 不使用XML配置MyBatis MyBatis同样允许开发者通过Java代码直接创建配置,创建自己的...
综上所述,该案例不仅涵盖了SpringMVC、MyBatis等核心框架的应用,还涉及了数据库连接池、事务管理以及一系列实用工具和技术点的使用,对于希望快速搭建高性能Web应用的开发者来说具有很高的参考价值。
在这个项目中,Spring主要负责管理对象的生命周期,提供事务管理,以及与其它框架如Struts和MyBatis的集成。通过Spring的Bean配置,我们可以控制各个组件的实例化和依赖关系,使得代码更加模块化和易于维护。 2. **...
此外,提供的PDF参考文档是MyBatis的官方文档,对于开发者来说非常宝贵,可以帮助他们理解和使用MyBatis的各种特性,包括SQL映射文件的编写、动态SQL、事务管理、缓存机制等。 在MyBatis中,SQL映射文件通常以XML...
MyBatis解决了传统JDBC编程中繁琐且容易出错的问题,通过简化代码和映射配置,将对象与数据库中的表进行对应和操作。 首先,MyBatis的中文参考手册是一份详细的学习文档,旨在帮助开发者学习如何使用MyBatis进行...
8. MyBatis的事务管理:MyBatis支持编程式和声明式事务管理,笔记会讲解如何配置及使用这两种方式,并给出示例代码。 9. MyBatis的插件机制:MyBatis允许开发者自定义拦截器,实现对SqlSession或Executor的增强。...
标题 "SpringBoot+Thymeleaf+MyBatis制作的校园事务管理系统.zip" 提供了我们正在探讨的是一个使用特定技术栈开发的校园事务管理系统的源码。这个系统利用了SpringBoot作为主要的后端框架,Thymeleaf作为前端模板...
- **AOP(面向切面编程)**:Spring提供AOP支持,可以实现如日志记录、事务管理等功能,Mybatis-Spring的事务管理就利用了AOP。 - **拦截器(Interceptor)**:SpringMVC中的拦截器可以在请求处理前后执行自定义...
MyBatis支持编程式和声明式事务管理。编程式事务管理需要在代码中显式调用开始、提交或回滚事务;声明式事务管理则可以通过Spring等框架进行配置,更加简洁。 **7. MyBatis-Spring集成** MyBatis可以与Spring框架...
MyBatis支持编程式事务管理和声明式事务管理,可以根据实际需求选择合适的事务控制方式。 九、MyBatis与Spring集成 MyBatis可以无缝集成Spring框架,通过Spring的TransactionManager进行事务管理,简化了事务处理。...