案例环境
1.编程式事务
步骤:
1.创建平台事务管理对象(PlatformTransactionManager)
4.创建事务定义对象
3.事务状态
2.提交事务(commit)
public class AccountServiceImpl implements AccountService {
private AccountDao accountDao;
public void setAccountDao(AccountDao accountDao) {
this.accountDao = accountDao;
}
private DataSource dataSource;
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource; }
public void transfer(String outName, String inName, Double money) {
//1.开启事务 创建平台事务控制管理器 需要添加数据源对象 不然事务不知道控制什么
PlatformTransactionManager ptm=new DataSourceTransactionManager(dataSource);
//1.创建数据源事务管理对象 添加数据源
/*DataSourceTransactionManager dtm=new DataSourceTransactionManager();
dtm.setDataSource(dataSource);*/
accountDao.inMoney(outName,money);
int i = 1/0;
accountDao.outMoney(inName,money);
//4.创建事务定义对象
TransactionDefinition td=new DefaultTransactionDefinition();
//3.事务状态
TransactionStatus ts=ptm.getTransaction(td);
//2.提交事务
ptm.commit(ts);
}
小节
- 使用spring提供的专用于mybatis的事务管理器在业务层硬编码进行事务管理。
- 业务层要注入dataSource对象