我是这样写的,但是try catch看着很不美观,而且手动回滚使得控制事务的代码侵入了业务层。
@Service
public class DepartmentServiceImpl {
@Autowired
private DepartmentMapper DepartmentMapper;
@Transactional
public ServiceResult addDepartment(Department department) {
try {
DepartmentMapper.insert(department);
return new ServiceResult(0, "添加成功");
} catch (Exception e) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return new ServiceResult(-1, "添加失败");
}
}
@Transactional
public ServiceResult deleteDepartmentById(String id) {
try {
DepartmentMapper.deleteByPrimaryKey(id);
return new ServiceResult(0, "删除成功");
} catch (Exception e) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return new ServiceResult(-1, "删除失败");
}
}
}
如果用第二种写法,虽然很简洁但是不能向上层返回信息
@Transactional
public void addDepartment(Department department) {
DepartmentMapper.insert(department);
}
请问有什么好的办法