数据量大时,采用stream流进行分批操作

        if(StringUtils.isNotEmpty(ygjc.getJoinQuestion())){
            List<String> joinQuestionTaskUUIDList = 
            ygjcMapper.getJoinQuestionTaskUUIDS(ygjc);
            if(CollectionUtil.isNotEmpty(joinQuestionTaskUUIDList)){
                //每500个提交一次
                if(joinQuestionTaskUUIDList.size()<500){
                    queryWrapper.in(YgjcEntity::getUuid, joinQuestionTaskUUIDList);
                }else {
                    // 指定大小
                    int maxNum = 500;
                    // 切分次数
                    int step = (joinQuestionTaskUUIDList.size() + maxNum - 1) / maxNum;
                    List<List<String>> collectList =
                            Stream.iterate(0, n -> n + 1)//初始值0,按照n+1迭代
                                    .limit(step)//限制次数
                                    .parallel()//并行操作,提高效率-多核并行
                                    .map(//流中的每一个元素都按照下面的方式映射
                                            a ->
                                                    joinQuestionTaskUUIDList.stream()
                                                           .skip(a * maxNum)//跳过前面的元素
                                                           .limit(maxNum)//限制流中的元素
                                                           .parallel()//并行
                                                  .collect(Collectors.toList()))//收集流元素
                                    .collect(Collectors.toList());//收集规则
                    for (List<String> joinQuestionTaskUUIDList1 : collectList) {//遍历
                        try {
                       queryWrapper.in(YgjcEntity::getUuid, joinQuestionTaskUUIDList1);
                        }catch (Exception e){
                       log.error("该批次异常,进行一下批次");
                        }

                    }
                }
            }
        }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值