日??偨Y(jié):分頁(yè)處理大批量數(shù)據(jù)

情景:處理歷史流量數(shù)據(jù),由于數(shù)據(jù)量比較大,可以按照時(shí)間或者分頁(yè)進(jìn)行分批處理
設(shè)計(jì)邏輯:定時(shí)任務(wù)處理前一天數(shù)據(jù),分頁(yè)查詢分批處理數(shù)據(jù)

        Boolean haveData = true;
        Integer pageNum = 1;
        String endDayStr = DateUtil.format(start, Constants.DAY_FORMAT);
        String startDayStr = DateUtil.format(DateUtil.offsetDay(start, dayOffset), Constants.DAY_FORMAT);
        while (haveData){
            Page<dto> detailInfo = null;
            detailInfo  = service.getInfoByPage(pageNum,
                            Constants.pageSize,startDayStr, endDayStr);
               
            assert detailInfo != null;
            List<dto> dtoList = detailInfo .getRecords();
            if(CollUtil.isNotEmpty(dtoList )){
                //具體處理邏輯
                pageNum++;
            }else {
                haveData = false;
            }
        }
    }

  //這里直接用mybatis plus的分頁(yè)查詢進(jìn)行處理的,可以自己寫個(gè)mapper或者直接用LambdaQueryWrapper做條件查詢都可以
    @Override
    public Page<dto> getInfoByPage(Integer pageNum, Integer pageSize, String startDayStr, String endDayStr) {
        Page<dto> page = new Page<>(pageNum, pageSize);
        baseMapper.getInfoByPage(page,startDayStr,endDayStr);
        return page;
    }

pom依賴

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.5</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot3-starter</artifactId>
            <version>4.3.0</version>
        </dependency>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容