最近项目中需要用到事务的保持数据修改的一致性的.事务作为开发人员经常用到的功能,但还真没有用过.作为android转后端的人员,赶紧查百度.
无非是加注解就可以.以为很简单但是实践起来是有有坑要填的.
原来代码:
第一步:在启动类中添加注解 @EnableTransactionManagement
@EnableTransactionManagement
@SpringBootApplication
@EnableAutoConfiguration
public class EducationCenterServiceApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(EducationCenterServiceApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(EducationCenterServiceApplication.class, args);
}
}
第二步:在执行方法中添加注解:@Transactional(rollbackFor = Exception.class)
@Transactional(rollbackFor = Exception.class)
@Override
public Boolean doSettlementByIds(ArrayList<Long> orderIds,SettleConfirmRequest record) throws Exception {
boolean result =false;
try {
//codeing .....
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
log.info("异常={}",e.getMessage());
log.info("回滚数据===");
}
log.info("================doSettlementByIds 结果={}",result);
// TODO Auto-generated method stub
return result;
}
写完后测试发现数据错误并不能回滚...那事务就不能保持.
发现需要在catch中添加throw new Exception("出现异常情况==") ;抛出异常就可以回滚了. 有异常需要处理的就是要手动抛出异常,如果没有异常需要处理,不用try catch也可以回滚!