说明:
(1)有关事务内容可以快速参考【MySQL综合应用二:事务机制一:事务的基本介绍】及附近文章;【JDBC入门九:JDBC实现事务(十分重要!!!)】;
(2) 【Spring JDBC模块】中也有事务控制;其中就包括编程式事务和声明式事务;本篇博客介绍编程式事务;
目录
然后,在applicationContext.xml中配置EmployeeService对象,并注入EmployeeDao:
然后,在JdbcTemplateTestor测试类中编写测试方法:
首先,在applicationContext.xml中配置transactionManager事务管理器对象:
然后,在需要事务控制的类(EmployeeService类)中,添加并注入transactionManager:
一:编程式事务简介
![]()
(1)【Spring JDBC模块】通过引入TransactionManager对象(事务管理器),来控制事务;
(2)TransactionManager对象提供了两个核心方法:commit()和rollback()方法;(PS:在【JDBC入门九:JDBC实现事务(十分重要!!!)】中Connection对象也有自己的commit()和rollback()方法来控制事务;都是相通的)
(3)本篇博客的代码沿用自【Spring JDBC与事务管理4:Spring JDBC四:Jdbc Template新增、更新、删除方法;(update();)】;
二:代码演示:没有使用【编程式事务控制】的情况
需求:公司入职10名新员工,需要把这10名新员工批量导入Employee表中;要求是,要么一次性全部导入,要么一个也不导入;
首先,创建EmployeeService类:
EmployeeService:
package com.imooc.spring.jdbc.service; import com.imooc.spring.jdbc.dao.EmployeeDao; import com.imooc.spring.jdbc.entity.Employee; import java.util.Date; public class EmployeeService { private EmployeeDao employeeDao; public void batchImport() { for (int i = 1; i <= 10; i++) { Employee employee = new Employee(); employee.setEno(8000 + i); employee.setEname("员工"+i); employee.setSalary(4000f); employee.setDname("研发部"); employee.setHiredate(new Date()); employeeDao.insert(employee); } } public EmployeeDao getEmployeeDao() { return employeeDao; } public void setEmployeeDao(EmployeeDao employeeDao) { this.employeeDao = employeeDao; } }
然后,在applicationContext.xml中配置EmployeeService对象,并注入EmployeeDao: