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 { 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-30 22:02:36 浏览: 18
根据您提供的代码,可以看出这是一个数据同步的逻辑,主要涉及到对上一次查询结果和当前查询结果的比较,然后进行新增、更新和删除操作。但是,您所提到的两个问题可能是由于没有对比数据的唯一标识进行正确的判断导致的。
首先,相同数据会重复新增,这可能是因为在遍历当前查询结果时,没有判断是否已经存在于上一次查询结果中。可以尝试在遍历当前查询结果时,加一个判断,判断当前数据是否已经存在于上一次查询结果中,若存在,则不进行新增操作。
其次,之前有的数据这次没有却没有删除掉,可能是因为在遍历上一次查询结果时,没有判断当前数据是否已经存在于当前查询结果中。可以尝试在遍历上一次查询结果时,加一个判断,判断当前数据是否已经存在于当前查询结果中,若不存在,则进行删除操作。
下面是修改后的代码示例:
```
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;
```
相关推荐
![md](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)