这两天写了一个定时任务,关于查询表中快过期的卡,发送短信提醒,在查询中,因为生产上的数据数十万条,数据量大,如果直接一下子查出来,会对数据库造成很大的压力,用到分页查询,按照正常逻辑,查询表中总数量,然后根据当前页以及每页数量,循环对数据库进行查询;
//分页查询,每次查询1000条数据
int pageSize = 1000;//每页数量
int page = 1;//定义总页数
int offset;//当前页起始数
int rowCount;//当前页结束数
List<GiftCard> list = null;
List<Integer> userIdList = new ArrayList<Integer>();
//得到总页数
if(giftCardCount > 0){
if(giftCardCount%pageSize==0){
page=(int) (giftCardCount/pageSize);
}else{
page=(int) (giftCardCount/pageSize+1);
}
}
//查询出还有三天且绑定了用户的优选卡信息
for (int i = 1; i < page + 1; i++) {
if(page == 1){//即将过期账号查询只有一页时
offset = 0;
rowCount = (int) giftCardCount;
list = giftcardDAO.getGiftCardThreeDaysDue(rowCount,offset,currentTim