使用注意事项
1,加上@Transactional(rollbackFor=Exception.class)
1 让checked例外也回滚:在整个方法前加上 @Transactional(rollbackFor=Exception.class)
2 让unchecked例外不回滚: @Transactional(notRollbackFor=RunTimeException.class)
3 不需要事务管理的(只查询的)方法:@Transactional(propagation=Propagation.NOT_SUPPORTED)
2,@Transactional加在Service(业务逻辑) public类或者public方法上
3,加上@Transactional注解对方法或者类 不能try 要把异常抛出(调用者可以进行try)事物才可以回滚
4,事物事例
这是个Service方法
@Transactional(rollbackFor=Exception.class)
public void test(int uid) {
UsersLoginLog record = new UsersLoginLog();
record.setUid(uid);
record.setRegistrationTime(new Date());
int i=usersLoginLogMapper.insert(record);
if(uid==1) {
logger.info("test ------------------- add switch getModelMlxl eroor");
throw new RuntimeException();
}else {
logger.info("test 成功");
}
}
如果throw new RuntimeException(); 那么刚刚被insert的数据,就会被回滚