利用 tk.mybatis 分批查詢數據

 

 public int execSmsQuestionnaireDetail(Date date) {
        int successCnt = 0;
        Example pushPlanExample = new Example(QuestionnaireDetail.class);
        Example.Criteria criteria = pushPlanExample.createCriteria();
        criteria.andIn("pushWay", Lists.newArrayList(1,4));
        criteria.andGreaterThanOrEqualTo("created", date);

        int count = questionnaireDetailMapper.selectCountByExample(pushPlanExample);
        log.info("短信發送計劃,本次任務待發送{}條", count);
        while (count > 0) {
            count -= 200;
            if (count < 0) {
                    count = 0;
             }
            //一次處理200條
            RowBounds rowBonds = new RowBounds(count, 200);
            List<QuestionnaireDetail> questionnaireDetails = questionnaireDetailMapper.selectByExampleAndRowBounds(pushPlanExample, rowBonds);
            log.info("短信發送計劃,有{}條計劃待發送", questionnaireDetails.size());
            // 隨機線性訪問這樣的遍歷效率最高
            if (questionnaireDetails instanceof RandomAccess) {
                log.info("RandomAccess logs");
                for (int i = 0; i < questionnaireDetails.size(); i++) {
                    QuestionnaireDetail bean = questionnaireDetails.get(i);
                    if (StringUtils.isNotBlank(bean.getSmsContent()) && StringUtils.isNotBlank(bean.getCustomerTel())) {
                        smsSendService.sendSMS(questionnaireDetails.get(i));
                        log.info("短信發送計劃smsSendService.sendSMS,發送成功");
                        successCnt++;
                    }

                }
            }
        }
        return successCnt;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章