表中数据过大,实现分页查询并操作,|| 查询到所有记录,分批实现操作需求

如果表中List数据量过大,执行业务速度慢,可以分批执行。

代码如下:
1.表中数据过大,分页查询表中记录

Map<String , Object>  params = new HashMap<>();
params.put("(数据库字段)",传入的值(或者需要知道的值));
    Page page = new Page();
    //每次500条数据
        page.setPer(500);
        //循环页数
        for(int i=1;i<10000;i++){
            page.setCurPage(i);  //第几页
            List<ApplyTable> applyTableList = applyTableService.getApplyTable(page,params);

            for(ApplyTable applyTable : applyTableList){

                String  mobile= applyTable.getXdrMobile();
                //发送短信
                SMSUtil.sendMsg(mobile, "您已获得信用助力发展");
            }
            //查不到数据就跳出循环
            if(applyTableList.size()<=0){
                break;
            }
        }

2.查询到所有表记录,分批执行

//params为查询条件
//查询表中所需要的记录
 List<ApplyTable> applyTableList = applyTableService.getApplyTable(params);
 
 //如果applyTableList 中数据过大,执行业务会非常缓慢
// 需要用.subList进行分批查询

  int toIndex = 500;
        if (!applyTableList.isEmpty()) {

            //每500条循环一次
            for (int i = 0; i < applyTableList.size(); i += 500) {
                //判断是否满足500条数据
                if (i + 500 > applyTableList.size()) {
                    // 注意下标问题
                    toIndex = applyTableList.size() - i;
                }

                List<ApplyTable> newList = applyTableList.subList(i, i + toIndex);

                for (ApplyTable applyTable : newList) {
                    String  mobile = applyTable.getXdrMobile();
                   /* SMSUtil.sendMsg(mobile, "您已获得信用助力发展");*/
                    System.out.println("发送短信");
                }

            }

            json.put("success", true);
            json.put("msg", "发送成功");

        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值