mysql 大量数据时分页查询

1. 分页查询

  • 写一个实体类 Paging
public class Paging implements Serializable {

    private static final long serialVersionUID = 1L;

    private int startNum;
    private int endNum;

    public int getStartNum() {
        return startNum;
    }

    public void setStartNum(int startNum) {
        this.startNum = startNum;
    }

    public int getEndNum() {
        return endNum;
    }

    public void setEndNum(int endNum) {
        this.endNum = endNum;
    }

}
  • 实现方法
private final static Integer PAGE_SIZE = 1000;
Paging paging = new Paging();
paging.setEndNum(PAGE_SIZE);
int page = -1;
for (;;) {
    page++;
    paging.setStartNum(page * PAGE_SIZE);
    // 查询方法 (需要根据实际情况修改)
    List<T> entityList = servicice.listT(paging);
    if ( entityList  == null || entityList .isEmpty();) {
        break;
    }
   // 处理查询出来的数据
   ..........
   // 为了防止避免当前页已经查询完了,无需再多查询一次
   if (entityList .size() < PAGE_SIZE ) {
       break;
   }
}

// xml 的写法: LIMIT ${startNum},${endNum}

2. 分页查询并做数据更新处理, 影响分页条件

  • 写一个Paging实体类
public class Paging implements Serializable {

    private static final long serialVersionUID = 1L;

    private int id;
    private int startNum;
    private int endNum;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getStartNum() {
        return startNum;
    }

    public void setStartNum(int startNum) {
        this.startNum = startNum;
    }

    public int getEndNum() {
        return endNum;
    }

    public void setEndNum(int endNum) {
        this.endNum = endNum;
    }

}
  • 实现方法
private final static Integer PAGE_SIZE = 1000;
Paging paging = new Paging();
paging.setStartNum(0);
paging.setEndNum(PAGE_SIZE);
for (;;) {
    // 查询方法 (需要根据实际情况修改)
    List<T> entityList = servicice.listT(paging);
    if ( entityList  == null || entityList .isEmpty();) {
        break;
    }
   // 处理查询出来的数据
   ..........
   // 为了防止避免当前页已经查询完了,无需再多查询一次
   if (entityList .size() < PAGE_SIZE ) {
       break;
   }
   // 把entityList的最后一个实体类的id设置进去
   paging.setId(entityList.get(entityList .size() -1).getId());
}

// xml 的写法: WHERE id > #{id,jdbcType=INTEGER} ORDER BY id ASC  LIMIT ${startNum},${endNum}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,167评论 1 32
  • 今天看到一位朋友写的mysql笔记总结,觉得写的很详细很用心,这里转载一下,供大家参考下,也希望大家能关注他原文地...
    信仰与初衷阅读 4,768评论 0 30
  • 这部分主要是开源Java EE框架方面的内容,包括Hibernate、MyBatis、Spring、Spring ...
    杂货铺老板阅读 1,474评论 0 2
  • 转 # https://www.cnblogs.com/easypass/archive/2010/12/ 08/...
    吕品㗊阅读 9,876评论 0 44
  • 1、俩小儿 没想到K422从宁波开往成都的车票这么紧张。提前几天买票,只购得一张软卧、两张坐票。本计划到车上补卧铺...
    小成和大成阅读 318评论 0 1