in a transactional method, by reading a collection of table records and cycling the values of update or save fields, the administrative account is updated every time an ordinary account is updated.
so re-query the system account
@Transactional(rollbackFor = Exception.class)
public int test4() {
int r= 0;
for (int i = 0; i<10; iPP) {
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;
}
how do teachers deal with this situation in the project?
is there any good alternative to this method of reading to a collection and then traversing update or save?