使用pagehelper实现分页功能

分页查询的优点
分页查询,是指当所查询数据量较多且需要显示时,采用按页显示的方法,分多次显示数据信息,而不是一次性全部显示

优点如下:

对服务器:一次性查询所有信息,服务器压力大,分页查询服务器压力小

对客户端:一次性显示所有信息,需要更多流量,加载时间也会更长,分页显示没有这个问题

对用户体验:一般最有价值的信息都会在前几页显示,也方便用户阅读,后部分查询出来的数据被使用几率很低

pagehelper的具体实现
1 实现原理:
PageHelper框架可以实现我们提供页码和每页条数,自动实现分页效果,收集分页信息,其分页原理就是在程序运行时,拦截sql语句,在语句尾部添加limit关键字,并按照分页信息向limit后追加分页数据

2 实现过程:
在核心配置文件中加入


持久层

Select("select id,name,address,gender from student_os")
List<Student> findAllStudents();
 


// page是页码,pageSize是每页条数
public PageInfo<Order> getAllStudentsByPage(Integer page,Integer pageSize){
    
    // 使用指定的代码设置要查询的页码和每页的条数
    // 在后面执行查询时,会自动按照这里指定的数据执行分页查询
    // page是页码,1就是查询第一页,pageSize是每页条数
    PageHelper.startPage(page,pageSize);
    // 下面执行查询操作,这个操作会被PageHelper框架在运行的sql语句末尾添加limit语句
    List<Student> list= studentMapper.findAllStudents();
 
    // list中的数据就是按照分页条件查询出来的某一页的数据
    // 但是分页查询方法返回的并不是list类型的对象,我们也需要获得分页的信息
    // 然后将查询出的数据和分页信息结合返回,这个类型,就是PageInfo
    
    
public JsonResult<PageInfo<Student>> pageOrders(
                                Integer page,Integer pageSize){
    PageInfo<Student> pageInfo=orderService.getAllStudentsByPage(page,pageSize);
    return JsonResult.ok(page+" 页查询结果",pageInfo);
}
pagehelper实现优化
原因:

上面提到,pageinfo中不仅包含所要查询的数据信息,还包含许多页面相关的信息,具体如下

//当前页
private int pageNum;
//每页的数量
private int pageSize;
//当前页的行数量
private int size;
//当前页面第一个元素在数据库中的行号
private int startRow;
//当前页面最后一个元素在数据库中的行号
private int endRow;
//总页数
private int pages;
//前一页页号
private int prePage;
//下一页页号
private int nextPage;
//是否为第一页
private boolean isFirstPage;
//是否为最后一页
private boolean isLastPage;
//是否有前一页
private boolean hasPreviousPage;
//是否有下一页
private boolean hasNextPage;
//导航条中页码个数
private int navigatePages;
等等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值