分页查询与展示笔记

分页查询,一些时候,当需要展示的数据量很大的时候,就需要分页,比如网页上的上一页、下一页,app的上拉加载更多,下拉刷新。
实现原理:
页面需要提交两个参数,页码、每一页条数。
limit关键字(在MySQL当中)参数1:起始位置,计算公式(页码-1)*每页条数
参数2:条数
总页数的获取:总的条数/每页条数+(总的条数%每页条数)>0?1:0

在我们访问购物网站、百度等网站时,我们会发现会有分页,就是将所有数据分段展示给用户,我们可以点击上一页下一页来切换数据,直到找到我们满意的数据。
在这里插入图片描述在这里插入图片描述
分页确实有效,与此同时,分页会加大系统的复杂度,但是可不可以不分页呢?

也可以。
但是
仅仅数据少的时候可以,如果你有上万条数据,上千万条海量数据呢?如果不分页,一次性全部展示,将会创建过多的对象,将会使内存耗尽,造成系统崩溃 过多的数据 不便于展示,会造成系统运行缓慢,说白了就是,卡的要死要死的~~~~~~~~~~~~~~~~~因为浏览器不能不能一次性显示太多数据,应用程序慢是因为一般都是出在网络访问(也属于IO),因为我们的CPU是很快的

不采取分页将会导致:
1.系统的硬件资源不够
2.用户体验差

在实际中使用懒加载
就是先给你一个假对象,但是里面没有数据,只要你真正的从里面
获取数据是,才会去查询数据。

例如当我们在访问网站的时候,快速向下划,会发现有空白,此处九四使用的懒加载。

例如我们在数据库中根据id查询用户数据
selectById();我们立马拿到一个空对象,并不会立即查询数据库
只有当你这个对象调用了getXxx()方法,才会真正的执行查询数据库的操作

优势
可以尽可能地减少不必要的数据访问,提高加载速度

缺点
当用户真的要查看数据时,需要从数据库获取信息,可能会造成延迟,特别要是网速慢的话,将会加载更慢,慢上加慢,让用户的体验更加不满。

分页也是采用懒加载

分页的实现方式
方式一
前端分页:
后台一次性返回全部数据,分页逻辑由前端实现
仅用于数据量较小的情况。
方式二
后台分页:
根据你要显示的页码来从数据库查询需要的这一小部分数据

分页原理:页面的数据,是从数据库读取的。要实现分页,只需从数据库中读取部分数据就可以了。
select * from xxx limit a,b;
代表从第a条数据开始,读取n条数 据。 a默认是从0开始,代表第一条数据,所以m对应的数据实际是a+1

我们此处是后台分页
通过LIMIT关键字来实现
语法1:limit a,b;
a是起始位置
b是查询的记录条数
分页的必要参数
页码:你要查看第几页
count:每一页的条数

#假设要是显示第一页每页3条数据
select * from user limit 0,3;
#假设要是显示第二页每页3条数据
select * from user limit 3,3;
#假设要是显示第三页每页3条数据
select * from user limit 6,3;

观察可以发现 起始位置是要通过计算的
公式 起始位置 =(页码-1)*条数

语法2:limit b;
b是查询的记录条数。(不常用,因为使用起来不方便,只能一下查询多少条记录条数,从头开始的数据)
那么问题1起始位置的计算是:页码-1)*条数
问题2:如何得到总页数?
比如总共10条,每页3条,总共4 页;
总共12条,每页3条,总共也是 4页。
总结规律:总共n条,每页m 条, 如果能整除,就是n/m页,如果不能整除就是n/m+1页。
即(n/m)+(n%m)>0?1:0
(总条数/每页条数)+(总条数%每页条数>0?1:0)
总结一下:
1.要实现分页的关键是使用limit关键字
2.页面需要提供两个参数,当前页码,每页条数
3.DAO层需要提供两个方法,获取某页的数据,获取总页数。

发布了14 篇原创文章 · 获赞 16 · 访问量 305

猜你喜欢

转载自blog.csdn.net/qq_41490938/article/details/105289071