需求:同时有多条修改数据库操作,当一条出错,所有回滚
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 in action之二以接口的方式编程 mybatis实战教程mybatis in action之三实现数据的增删改查 mybatis实战教程mybatis in action之四实现关联数据的查询 mybatis实战教程mybatis in action之五...
同时,系统还提供了请假记录的管理和统计功能,帮助学校对请假情况进行分析和评估,为学生请假政策和管理提供参考和支持。通过该系统,高校能够更好地管理学生请假事务,提供更好的教育和管理服务,提升学校的教学...
Java SSM项目是一种使用Java语言和SSM框架(Spring + Spring MVC + ...它提供了一种将数据库操作与Java对象映射起来的方式,避免了手动编写繁琐的SQL语句,并提供了事务管理和缓存等功能,简化了数据库访问的过程
利用Spring事务管理确保了活动报名和参与记录的一致性和完整性,保证了系统的稳定性和可靠性。 学生活动管理功能: 学生可以浏览学校组织的各类活动信息,包括活动时间、地点、内容和参与条件等。 提供活动报名功能...
"weixin135房屋租赁管理系统的设计与实现+ssm"是一个基于Spring、SpringMVC和MyBatis(SSM)框架的房屋租赁管理软件。该项目通常旨在简化房屋出租流程,为房东和租客提供一个交互式平台。以下是对该系统可能包含的...
利用Spring事务管理确保了数据库操作的一致性和完整性,保证了系统的稳定性和可靠性。 房屋管理与租赁功能: 管理员可以发布、编辑和删除房屋租赁信息,包括房屋基本信息、租金、房东联系方式等。 用户可以通过微信...
阅读标签 【】【】【】【】【】 【】【】【】【】【】 【】【】【 】 参考文章 SpringBoot整合中间件:【】 || 【GitEE·点这里】 序号 文章标题 01 Boot2基础:环境搭建和...Boot2基础:配置AOP切面编程,解决日志
利用Spring事务管理确保了订单操作的一致性和完整性,保证了系统的稳定性和可靠性。 学生用餐功能: 学生可以浏览菜单,查看菜品详情,并根据个人口味偏好选择菜品加入购物车或进行预订。 提供购物车管理功能,学生...
利用Spring事务管理确保了订单操作的一致性和完整性,保证了系统的稳定性和可靠性。 客户点菜功能: 客户可以浏览菜单,查看菜品详情,并根据个人口味偏好选择菜品加入购物车。 提供购物车管理功能,客户可以随时...
同时,项目也注重数据的安全性和完整性,通过数据库设计和事务管理等方式,确保了数据的准确性和可靠性。 这份资源对于正在学习SSM框架和Java Web开发的同学来说,是一份不可多得的实践项目。通过学习和研究这个...
利用Spring事务管理确保了养老服务项目和社区活动的一致性和完整性,保证了系统的稳定性和可靠性。 老年人养老功能: 老年人可以浏览社区养老服务项目和活动信息,选择符合自己需求的服务内容。 提供在线预约功能,...
将学习到的新技术积累在该项目下,以便在需要参考的时候可以快速的找到 MAS add mysql jdbc驱动 mvn install:install-file -Dfile=ext_jar/mysql-connector-java-5.1.46.jar -DgroupId=...