@Override
public List<RuleTypeUpdate> insertAndSelectRuleTypeUpdate(List<RuleTypeUpdate> ruleTypeUpdate) {
List<RuleTypeUpdate> ruleTypeUpdates = ruleTypeUpdateMapper.selectRuleTypeUpdateList(new RuleTypeUpdate());
//取差集
List<RuleTypeUpdate> ruleInsertList = ruleTypeUpdate.stream().
filter(item -> findRuleTypeData(item.getRuleTypeId(), ruleTypeUpdates) == -1)
.collect(Collectors.toList());
//取并集
List<RuleTypeUpdate> ruleUpdataList = ruleTypeUpdate.stream().
filter(item -> findRuleTypeData(item.getRuleTypeId(), ruleTypeUpdates) > -1)
.collect(Collectors.toList());
if (!CollectionUtils.isEmpty(ruleInsertList)) {
for (RuleTypeUpdate typeUpdate : ruleInsertList) {
//初始数据的添加
typeUpdate.setCreateTime(DateUtils.getNowDate());
ruleTypeUpdateMapper.insertRuleTypeUpdate(typeUpdate);
}
} else {
for (RuleTypeUpdate typeUpdate : ruleUpdataList) {
//后续数据的更新(分数不更新)
typeUpdate.setUpdateTime(DateUtils.getNowDate());
ruleTypeUpdateMapper.updateRuleTypeIntScore(typeUpdate);
}
}
return ruleTypeUpdates;
}
private int findRuleTypeData(String ruleTypeId, List<RuleTypeUpdate> ruleTypeUpdate) {
int res = -1;
for (int i = 0; i < ruleTypeUpdate.size(); i++) {
if (ruleTypeId.equals(ruleTypeUpdate.get(i).getRuleTypeId())) {
res = i;
break;
}
}
return res;
}
Java数据的新增和更新
最新推荐文章于 2024-08-29 20:24:08 发布
该代码段展示了一个Java方法,用于处理RuleTypeUpdate对象列表的数据库操作。首先,它从数据库中选择现有数据,然后通过计算差集和并集来决定哪些对象需要插入和更新。插入操作会设置当前时间戳,而更新操作仅更新时间戳而不改变分数。
摘要由CSDN通过智能技术生成