@Transactional(rollbackFor = Exception.class)
public int test4() {
int r= 0;
for (int i = 0; i<10; i++) {
try {
//查询管理账户
SystemAccout systemAccout = gaodeMapper.getSysAccout(1);
//更新普通账户
Gaode gao = new Gaode();
gao.setId(i);
gao.setAddrName("testException-save-one " + i);
gao.setPoint(systemAccout.getPoint());
gao.setBal(systemAccout.getBal());
r = gaodeMapper.updateUser(gao);
if(r > 0) {
//假设更新到第五条出现异常,只需回滚本次循环的所有update 或 save操作记录,继续执行不中断循环
if(i == 5) {
throw new RuntimeException();
}
//更新管理账户
SystemAccout sys = new SystemAccout();
sys.setId(1);
sys.setPoint(systemAccout.getPoint() - ThreadLocalRandom.current().nextInt(10, 100));
gaodeMapper.updateSystemAccoutn(sys);
}
}catch (Exception e) {
throw e;
}
}
return r;
}在一个有事务的方法中通过读取表记录集合,循环update或save字段值,每更新一个普通账户都要更新一次管理账户,所以要重新查询系统账户。不知各位老师在项目中遇到这种情况怎么处理的?这种通过读取到一个集合然后遍历update或save的方法还有什么好方案代替呢?
添加回答
举报
0/150
提交
取消