mybatis plus 批量保存/更新数据报错:com.microsoft.sqlserver.jdbc.SQLServerException: 必须执行该语句才能获得结果。
sql server saveBatch
·
以下代码执行后,报错,并且数据是成功插入数据库的。
@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;
}
改成单条插入,并且开启事务。

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)