pagehelper的使用及避坑

pagehelper是一个非常简单实用的分页插件,但是还是有一个小坑在里面的,话不多说,直接上干货。

1. 分页的使用

PageInfo<T> pageInfo = PageHelper.startPage(pageNum,pageSize).doSelectPageInfo(() -> mapper.query());

参数说明: pageNum 第几页

​ pageSize 一页显示数量

这样就实现了SQL的分页,pagehelper会在SQL中自动加上分页的信息(limit)。

如果不习惯使用lamabda表达式,下面的代码也一样可以实现分页。

PageHelper.startPage(pageNum,pageSize);
PageInfo<T> pageInfo = new PageInfo<>(mapper.query());

注意,PageHelper.startPage()方法调用以后,后面必须有一个Mapper的查询方法,必须被消费掉。否则会由于ThreadLocal的原因,当线程被其他方法调用时被分页。

2. 小心避坑

这个坑就是“ 某些情况下,我明明没有使用PageHelper.startPage()方法,但是我的SQL为什么分页了?”

引起这个情况的可能有两种原因:

① 上一个PageHelper.startPage()未被消费

简单来讲,你上面的代码调用了PageHelper.startPage()方法,但是后面没有一个Mapper的查询方法来消费掉。所以你的这个查询就用到了上一个的分页。

② 你的传参对象的分页字段是pageNum和pageSize

划重点,这个才是真正的坑。只要你的传参对象的分页字段是pageNum和pageSize,你不需要调用PageHelper.startPage()方法,pagehelper就会帮你实现分页,因为pageNum和pageSize是PageHelper.startPage()方法的参数。

public static <E> Page<E> startPage(int pageNum, int pageSize) {
	return startPage(pageNum, pageSize, true);
}

所以,为了避免这种情况的出现,请不要给你的分页字段起这两个名字。pageNumber和pageCount就很不错。

  • 9
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PageHelper是一个用于分页查询的Java插件,可以方便地对数据库查询结果进行分页处理。 使用PageHelper可以简化分页操作的代码,它提供了一些方法来处理分页查询,例如设置当前页码、每页显示的记录数、总记录数等。 以下是使用PageHelper的步骤: 1. 添加依赖:在项目的pom.xml文件中添加PageHelper的依赖项。例如: ```xml <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.5</version> </dependency> ``` 2. 配置PageHelper:在项目的配置文件中(如application.properties或application.yml)配置PageHelper的属性。例如: ```properties # MySQL数据库配置 spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase spring.datasource.username=root spring.datasource.password=123456 # PageHelper配置 pagehelper.helper-dialect=mysql pagehelper.reasonable=true pagehelper.support-methods-arguments=true ``` 3. 使用PageHelper:在需要进行分页查询的方法中,通过调用PageHelper.startPage方法来开启分页功能,并设置相关参数。例如: ```java public List<User> getUsers(int pageNum, int pageSize) { // 开始分页 PageHelper.startPage(pageNum, pageSize); // 执行查询操作,获取分页结果 List<User> userList = userMapper.getUsers(); // 返回分页结果 return userList; } ``` 在以上示例中,startPage方法将会对后续的查询进行分页处理,pageNum参数指定当前页码,pageSize参数指定每页显示的记录数。最后,返回的是经过分页处理的结果。 注意:需要结合具体的ORM框架(如MyBatis)来使用PageHelper,并且需要正确配置数据库相关信息和PageHelper的属性。具体的使用方式可以参考PageHelper的官方文档或示例代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值