问题1:如何添加实现事务回滚?
//使用@Transactional注解
问题2:如何实现在Controller拿到事务回滚的异常信息
//定义一个runtimeException ,传递数据
问题1代码示例:
@Transactional(rollbackFor = { Exception.class })
public int saveUser(User user)
{
try
{
return userDao.saveUser(user);
}
catch (Exception e)
{
//手动回滚
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
//自动回滚
//throw new RuntimeException();
}
}
问题2代码示例:
//定义runtimeException(默认spring事务只在发生未被捕获的runtimeException时才回滚。)
public class UserException extends RuntimeException {
public UserException(String msg)
{
super(msg);
}
}
//Service处理
@Transactional(rollbackFor = { Exception.class })
public int saveUser(User user)
{
try
{
return userDao.saveUser(user);
}
catch (Exception e)
{
//传递异常星系
throw new UserException(e.getMessage());
}
}
//Controller处理
@RequestMapping("/saveUser")
public int saveUser()
{
User user=new User();
try {
userService.saveUser(user) ;
} catch (Exception e) {
//拿到事务回滚并传递的值
System.out.println(e.getMessage());
}
}