Java数据的新增和更新

该代码段展示了一个Java方法,用于处理RuleTypeUpdate对象列表的数据库操作。首先,它从数据库中选择现有数据,然后通过计算差集和并集来决定哪些对象需要插入和更新。插入操作会设置当前时间戳,而更新操作仅更新时间戳而不改变分数。
摘要由CSDN通过智能技术生成
 @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;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值