if (lastResult.isEmpty()) { toBeInserted = result; } else { // 遍历上一次查询结果,看看是否需要更新或删除 for (Map<String, Object> last : lastResult) { boolean found = false; for (Map<String, Object> current : result) { if (last.get("jsbh").equals(current.get("jsbh")) && last.get("sm").equals(current.get("sm")) && last.get("code").equals(current.get("code")) ) { found = true; break; } } if (!found) { toBeDeleted.add(last); } } // 遍历当前查询结果,看看是否需要插入或更新 for (Map<String, Object> current : result) { boolean found = false; for (Map<String, Object> last : lastResult) { if (last.get("jsbh").equals(current.get("jsbh")) && last.get("sm").equals(current.get("sm")) && last.get("code").equals(current.get("code")) ) { found = true; break; } } if (found) { toBeUpdated.add(current); } else { // 判断当前数据是否已经存在于上一次查询结果中,若存在,则不进行新增操作 boolean existsInLast = false; for (Map<String, Object> last : lastResult) { if (last.get("jsbh").equals(current.get("jsbh")) && last.get("sm").equals(current.get("sm")) && last.get("code").equals(current.get("code")) ) { existsInLast = true; break; } } if (!existsInLast) { toBeInserted.add(current); } } } } // 批量插入 if (!toBeInserted.isEmpty()) { jxMjKhTxService.batchInsert(toBeInserted); } // 批量更新 if (!toBeUpdated.isEmpty()) { jxMjKhTxService.batchUpdate(toBeUpdated); } // 批量删除 if (!toBeDeleted.isEmpty()) { jxMjKhTxService.batchDelete(toBeDeleted); } // 保存本次查询结果 lastResult = result; 上次查询有数据但是这次没查到为什么还是新增了 详细解决办法
时间: 2024-01-09 16:03:47 浏览: 63
华为OD机试C卷- 模拟目录管理功能(Java & JS & Python & C).md-私信看全套OD代码及解析
在这段代码中,当上次查询结果不为空,但此次查询结果中没有找到与上次相同的数据时,仍然将上次查询结果中的数据作为要删除的数据进行批量删除操作,这显然是错误的。因此,需要增加判断,只有在上次查询结果中找到与当前查询结果不同的数据时,才将它们作为要删除的数据。
具体解决办法如下:
```
if (lastResult.isEmpty()) {
toBeInserted = result;
} else {
// 遍历上一次查询结果,看看是否需要更新或删除
for (Map<String, Object> last : lastResult) {
boolean found = false;
for (Map<String, Object> current : result) {
if (last.get("jsbh").equals(current.get("jsbh"))
&& last.get("sm").equals(current.get("sm"))
&& last.get("code").equals(current.get("code"))) {
found = true;
break;
}
}
if (!found) {
toBeDeleted.add(last);
}
}
// 遍历当前查询结果,看看是否需要插入或更新
for (Map<String, Object> current : result) {
boolean found = false;
for (Map<String, Object> last : lastResult) {
if (last.get("jsbh").equals(current.get("jsbh"))
&& last.get("sm").equals(current.get("sm"))
&& last.get("code").equals(current.get("code"))) {
found = true;
break;
}
}
if (found) {
toBeUpdated.add(current);
} else {
// 判断当前数据是否已经存在于上一次查询结果中,若存在,则不进行新增操作
boolean existsInLast = false;
for (Map<String, Object> last : lastResult) {
if (last.get("jsbh").equals(current.get("jsbh"))
&& last.get("sm").equals(current.get("sm"))
&& last.get("code").equals(current.get("code"))) {
existsInLast = true;
break;
}
}
if (!existsInLast) {
toBeInserted.add(current);
}
}
}
// 批量插入
if (!toBeInserted.isEmpty()) {
jxMjKhTxService.batchInsert(toBeInserted);
}
// 批量更新
if (!toBeUpdated.isEmpty()) {
jxMjKhTxService.batchUpdate(toBeUpdated);
}
// 批量删除
if (!toBeDeleted.isEmpty()) {
jxMjKhTxService.batchDelete(toBeDeleted);
}
// 保存本次查询结果
lastResult = result;
}
```
阅读全文