Maven项目中分页工具PageHelper的简单使用

发布于:2024-03-13 ⋅ 阅读:(84) ⋅ 点赞:(0)

这里简单记一下分页工具PageHelper的使用,使用可以直接从数据库中获取所有数据,而由其进行自动分页,节省开发时间

目录

添加依赖

 使用PageHelper

 获取数据


添加依赖

首先我们需要在pom中添加咱们要使用的依赖

 <!--pageHelper坐标-->
    <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper-spring-boot-starter</artifactId>
      <version>1.4.6</version>
    </dependency>

 使用PageHelper

//开启分页查询 PageHelper
        PageHelper.startPage(pageNum,pageSize);

 PageHelper为我们提供了Page类来转换我们直接从数据库获取的信息

这边提供部分源码,感兴趣的可以自己去看

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package com.github.pagehelper;

import com.github.pagehelper.BoundSqlInterceptor.Chain;
import com.github.pagehelper.util.SqlSafeUtil;
import com.github.pagehelper.util.StackTraceUtil;
import java.io.Closeable;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.ibatis.logging.Log;
import org.apache.ibatis.logging.LogFactory;

public class Page<E> extends ArrayList<E> implements Closeable {
    private static final long serialVersionUID = 1L;
    private static final Log log = LogFactory.getLog(Page.class);
    private final String stackTrace;
    private int pageNum;
    private int pageSize;
    private long startRow;
    private long endRow;
    private long total;
    private int pages;
    private boolean count;
    private Boolean reasonable;
    private Boolean pageSizeZero;
    private String countColumn;
    private String orderBy;
    private boolean orderByOnly;
    private BoundSqlInterceptor boundSqlInterceptor;
    private transient Chain chain;
    private String dialectClass;
    private Boolean keepOrderBy;
    private Boolean keepSubSelectOrderBy;

    。。。

这里简单看一下它为我们提供的参数变量,最常用的是pageNum(页数),pageSize(页的大小),total(总数量), 以及getResult()获取我们这一页的数据。

通常情况下,我们可以建立一个类(类似PageBean)来保存我们从Page中获取到的信息

package com.yjzx.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class PageBean<T> {
    private Long total;//总条数
    private List<T> items;//当前页面数据集合
}

 获取数据

我们需要将数据库数据List强制转换为Page

 @Override
    public PageBean<User> list(Integer pageNum, Integer pageSize, String username, String disabled) {
        //1.创建PageBean对象
        PageBean<User> pb=new PageBean<>();

        //2.开启分页查询 PageHelper
        PageHelper.startPage(pageNum,pageSize);
        
        List<User> as=userMapper.list(username,disabled);
        
        //Page中提供了方法,可以获取PageHelper分页查询后,得到的总记录条数和当前页数据
        Page<User> p= (Page<User>) as;

        //把数据填充到PageBean对象中
        pb.setTotal(p.getTotal());
        pb.setItems(p.getResult());
//        System.out.println(pb);
        return pb;
    }

这时候返回的pb即为分页数据




这边提供前端使用(Vue)

const userList = async () => {
  let params = {
    pageNum: pageNum.value,
    pageSize: pageSize.value,
    username: text.value ? text.value : null,
    disabled: disabled.value ? disabled.value : null,
  };
  // console.log(params)
  let result = await userListService(params);
  console.log(result.data);
  //渲染视图
  //处理数据,给数据模型扩展一个属性categoryName,分类名称
  total.value = result.data.total;
  users.value = result.data.items;
  console.log(users.value);
};

js:

//用户列表
export const userListService = (params) => {
    
    console.log(params)
    return request.get('/user/list', {params:params});
}
@GetMapping("/list")
    public Result<PageBean<User>> list(
            Integer pageNum,
            Integer pageSize,
            @RequestParam(required = false)String username,
            @RequestParam(required = false)String disabled
    ){
        System.out.println(username);
        PageBean<User> pb=userService.list(pageNum,pageSize,username,disabled);
//        System.out.println(title);
        return Result.success(pb);
    }

 


网站公告

今日签到

点亮在社区的每一天
去签到