如果表中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", "发送成功");
}