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

这里简单记一下分页工具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);
    }

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用PageHelper分页工具,你需要按照以下步骤进行配置和使用: 1. 引入PageHelper依赖:在你的项目,添加PageHelper的依赖。如果你使用Maven,可以在pom.xml文件添加以下依赖: ```xml <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>最新版本号</version> </dependency> ``` 2. 配置PageHelper参数:在你的项目配置文件(如application.properties或application.yml),添加PageHelper的配置参数。以下是一个示例配置(以application.properties为例): ```properties # 设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用 pagehelper.offsetAsPageNum=true # 设置为true时,使用RowBounds分页会进行count查询 pagehelper.rowBoundsWithCount=true # 设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果 pagehelper.pageSizeZero=true ``` 3. 使用PageHelper进行分页查询:在需要分页的查询方法使用PageHelper.startPage方法设置分页信息。例如: ```java import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; // ... public List<User> getUserList(int pageNum, int pageSize) { // 开始分页 PageHelper.startPage(pageNum, pageSize); // 执行查询操作,此处省略具体的查询代码,假设查询出了List<User> userList // ... // 使用PageInfo对结果进行封装 PageInfo<User> pageInfo = new PageInfo<>(userList); // 获取分页结果 List<User> pagedUserList = pageInfo.getList(); return pagedUserList; } ``` 在上面的示例,我们使用PageHelper.startPage方法设置了pageNum和pageSize,然后执行查询操作,接着使用PageInfo对查询结果进行封装。最后,通过调用pageInfo.getList()方法获取分页结果。 这样,你就可以使用PageHelper进行分页查询了。记住,在使用PageHelper分页时,需要注意在查询之前调用PageHelper.startPage方法进行分页设置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

篆愁君的烦恼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值