分页简介
用来将数据分割成多个部分来分页面展示。
什么时候用?
数据量达到一定的时候,就需要使用分页来进行数据分割。要不然可能会面临以下问题:
- 客户端一次性显示太多数据会影响到用户的体验,比如很难找到客户想要的信息,以及加载页面数据过慢。
- 对于服务端来说,一次性传送的数据过多,可能造成内存溢出。
分页的分类
分页分为真分页和假分页:
- 真分页(物理分页):
在mysql中使用select * from table where …limit start , size(在oracle中复杂些)
第一个参数start代表开始数据的索引位置
第二个参数是要查询多少条数据 - 假分页(逻辑分页):
直接使用select * from table where …
这样将所有数据查询出来存放到内存中,每次需要查询时直接从内存中去取出相应索引区间的数据
区别
真分页相比于假分页不会造成内存溢出,但翻页的数据相比于假分页又慢,所以根据实际情况选择分页方式,如果数据量不大,可以考虑使用假分页使翻页速度加快。
实现
假分页
假分页实际上使用List去存储所有查询出的值,再用subList方法获取两个索引之间的数据。
先在dao层,创建StudentMapper接口
List<Student> queryStudentsByArray();
再创建StudentMapper.xml文件,编写查询语句:
<select id="queryStudentsByArray" resultType="Student">
select * from student
</select>
然后定义Service接口并定义分页方法:
List<Student> queryStudentsByArray(int currPage, int pageSize);
再在Servlce实现类中重写该方法:
@Override
public List<Student> queryStudentsByArray(int currPage, int pageSize) {
List<Student> students = studentMapper.queryStudentsByArray();
// 从第几条数据开始
int firstIndex = (currPage - 1) * pageSize;
// 到第几条数据结束
int lastIndex = currPage * pageSize;
return students.subList(firstIndex, lastIndex);
}
这里控制器和前台就根据这个方法来编写。
真分页
暂时先不整理。
来源:CSDN
作者:helllolsy
链接:https://blog.csdn.net/CodingNO1/article/details/104423663