一、分页参数

  • 总数据条数(count) 从数据库中查询
  • 每页数据条数(pageSize) 前端传入
  • 当前页码(currentPage) 前端传入
  • 总页数(totalPage) 计算得来 总页数 = 总数据条数 / 每页展示条数
  • 是否有下一页(isNext) 当前页码与总页数比较
  • 是否有上一页(isPrevious) 当前页码与总页数比较
  • 数据(data) 从数据库中查询

二、分页类别

1.物理分页

物理分页依赖的是某一物理实体,这个物理实体就是数据库,比如MySQL数据库提供了limit关键字,只需要编写带有limit关键字的SQL语句,数据库返回的就是分页结果。

SELECT * FROM `shop` LIMIT (currentPage-1)*pageSize, pageSize;

2.逻辑分页(内存分页)

逻辑分页依赖的是算法。数据库返回的是全部数据,然后通过算法获取分页数据,常用的操作是一次性从数据库中查询出全部数据并存储到List集合中,因为List集合有序,再根据索引获取指定范围的数据。

SELECT * FROM 'shop';

三、分页对比

1.数据库负担

物理分页每次都访问数据库,逻辑分页只访问一次数据库,物理分页对数据库造成的负担大。

2.服务器负担

逻辑分页一次性将数据读取到内存,占用了较大的内存空间,物理分页每次只读取一部分数据,占用内存空间较小。

3.实时性

逻辑分页一次性将数据读取到内存,数据发生改变,数据库的最新状态不能实时反映到操作中,实时性差。物理分页每次需要数据时都访问数据库,能够获取数据库的最新状态,实时性强。

4.适用场合

逻辑分页主要用于数据量不大、数据稳定的场合,物理分页主要用于数据量较大、更新频繁的场合。

更多推荐

Java逻辑分页与物理分页