前置条件:每个文件对应一笔订单
页面传过来要保存数据库的文件集合,首先查询数据库对应数据库有没有对应订单的文件,没有的话直接便利保存各个文件信息。
有的话,查出数据库文件的集合,便利数组获取获取数据对应订单的id集合。把页面传过来的对象集合,有则更新,无则保存,每次操作删除集合中对应id,最后如果还有就统一删除
// testVoList为页面传的文件集合
//查询数据库中临时保存文件集合testList
LambdaQueryWrapper<Test> testWr = new QueryWrapper<Test>().lambda();
testWr.eq(Test::getOrderId,id);
List<Test> testList = testService.list(testWr );
if(CollectionUtils.isNotEmpty(testList )){
List<Integer> oldIdList = testList.stream().map(Test::getOrderId).collect(Collectors.toList());
for (Test test : testVoList ) {
test.setName("xx");
test.setRemarks("xx");
//对比传过来的数据是否在数据库存在,有则更新,无则删除
if(oldIdList.contains(test.getOrderId())) {
testService.updateById(test);
oldIdList.remove(test.getOrderId());
}else {
testService.save(test);
}
}
//删除剩余的老id
if(CollectionUtils.isNotEmpty(oldIdList)){
testService.removeByIds(oldIdList);
}
}else if(CollectionUtils.isNotEmpty(testVoList)){
for (Test test : testVoList) {
test.setName("xx");
test.setRemarks("xx");
testService.save(test);
}
}