spring+mybatis使用事务管理不生效原因分析

spring+mybatis使用事务管理不生效原因

  1. 检查spring的配置信息是否配置正确

	
		
			
			
		
	
	
	
	
		
		
		
		
	

其中最容易出错的点是
expression="execution(* com.xinrui.hospital.service..(…))"的写法,上述写法是正确的写法。

2.其次是在service层对于要管理的方法不要使用try-catch来捕获异常信息

package com.xinrui.hospital.service.impl;

import javax.annotation.Resource;

import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;

import com.xinrui.hospital.bean.Account;
import com.xinrui.hospital.dao.IAccountDao;
import com.xinrui.hospital.service.IAccountService;

/**
 * 
 * @ClassName: AccountServiceImpl
 * @Description: 转账服务实现类
 * @author 梁志成
 * @date 2016年3月22日 下午5:26:36
 *
 */
@Service(value = "accountService")
public class AccountServiceImpl implements IAccountService {

	@Resource(name = "accountDao")
	private IAccountDao accountDao;

	/**
	 * 
	 * @Title: transfer
	 * @Description: 转账
	 * @param @param out 转出账号
	 * @param @param in 转入账号
	 * @param @param money 转账金额
	 * @return void
	 */
	public boolean transfer(String out, String in, Double money) {

		if (StringUtils.isNotEmpty(out) && StringUtils.isNotEmpty(in)) {
			Account outAccount = new Account();
			outAccount.setMoney(money);
			outAccount.setName(out);
			accountDao.outMoney(outAccount);
			int i = 1 / 0;
			Account inAccount = new Account();
			inAccount.setMoney(money);
			inAccount.setName(in);
			accountDao.inMoney(inAccount);
		}

		return false;

	}
}

上述是正确的配置。

3.确保事务交由spring管理

	
	
		
	
	
	
		
		
	

上述是正确的配置。

你可能感兴趣的:(mybatis,spring)