Mybatis 第二节 事务管理及手动提交事务

こ雲淡風輕ζ 提交于 2020-04-20 06:01:59

事务管理

开启事务

手动提交事务

如果方法上没有@Transactional注解,则表示不启用事务。

手动管理事务。

package com.yxl.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.stereotype.Service;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.annotation.Transactional;

import com.yxl.dao.UserDao;
import com.yxl.entity.User;

import java.util.List;

@Service // 声明成一个spring bean
public class UserService {
	@Autowired
	DataSourceTransactionManager dataSourceTransactionManager;

	@Autowired
	TransactionDefinition transactionDefinition;

	@Autowired // 连接到UserDao Bean
	private UserDao userDao;


	/**
	 * 手动提交事务
	 * 
	 * @return
	 */
	public String update1() {
		TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
		try {
			User user = new User();
			user.setName("android");
			user.setAge(200);
			userDao.update(user);

			int i = 10 / 0;

			User user1 = new User();
			user1.setName("ios");
			user1.setAge(200);
			userDao.update(user1);

			dataSourceTransactionManager.commit(transactionStatus); // 手动提交
		} catch (Exception e) {
			System.out.println("事务回滚 ");
			e.printStackTrace();
			
			
			dataSourceTransactionManager.rollback(transactionStatus); // 事务回滚
		}
		return "update OK!";
	}

}

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!