以下代码执行后,报错,并且数据是成功插入数据库的。
@Override
public int EdtStelesList(List<Steles> stelesList) {
int row = 0;
boolean isAdd = false; //数据的性质是一致的
for (Steles tnsSteles : stelesList) {
if (tnsSteles.getId().intValue() == 0) {
tnsSteles.setId(null);
tnsSteles.setCreatedate(LocalDateTime.now());
tnsSteles.setSoftdel(0);
isAdd = true;
} else {
tnsSteles.setModifydate(LocalDateTime.now());
tnsSteles.setSoftdel(0);
}
}
try {
if (isAdd) {
row = saveBatch(stelesList) ? 1 : 0;
} else {
row = updateBatchById(stelesList) ? 1 : 0;
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
return row;
}
数据表id: 自增。
解决:
@Transactional(rollbackOn = RuntimeException.class)
@Override
public int EdtStelesList(List<Steles> stelesList) {
int row = 0;
for (Steles tnsSteles : stelesList) {
if (tnsSteles.getId().intValue() == 0) {
tnsSteles.setId(null);
tnsSteles.setCreatedate(LocalDateTime.now());
tnsSteles.setSoftdel(0);
row = tnsStelesMapper.insert(tnsSteles);
} else {
tnsSteles.setModifydate(LocalDateTime.now());
tnsSteles.setSoftdel(0);
row = tnsStelesMapper.updateById(tnsSteles);
}
}
return row;
}
改成单条插入,并且开启事务。