mybatis-plus中使用pagehelper避坑

文章讲述了在使用PageHelper进行分页查询时,如果参数对象包含pageNum和pageSize字段,即使未调用PageHelper.startPage(),也会自动进行分页。为了避免这种行为,应避免使用默认分页字段名。另外,调用PageHelper.startPage()后必须有Mapper查询方法进行消费,否则可能导致线程中的分页信息被错误地应用到后续查询中。
摘要由CSDN通过智能技术生成

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

今天测试一个接口,没有传递分页字段,但是后台还是进行了分页查询。这个是因为虽然没有传递分页查询,但是后台的参数对象中有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就很不错。

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

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

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

MyBatis-Plus提供的PageHelper类是用于分页查询的工具类,它可以帮助我们简化分页查询的代码,提高开发效率。使用PageHelper类进行分页查询的步骤如下: 1. 引入MyBatis-Plus的依赖包和PageHelper的依赖包。 2. 在MyBatis的配置文件配置PageHelper插件。 3. 在DAO层的Mapper接口定义查询方法,并添加Page对象作为方法参数。 4. 在查询方法使用PageHelper.startPage()方法设置分页参数,然后调用Mapper接口的查询方法查询数据。 5. 将查询结果封装到Page对象,并返回Page对象。 下面是一个示例代码: ``` // 引入PageHelper依赖包 <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.10</version> </dependency> // 在MyBatis的配置文件配置PageHelper插件 <plugins> <plugin interceptor="com.github.pagehelper.PageInterceptor"> <property name="helperDialect" value="mysql"/> </plugin> </plugins> // 在DAO层的Mapper接口定义查询方法,并添加Page对象作为方法参数 public interface UserMapper { List<User> selectUserList(Page<User> page); } // 在查询方法使用PageHelper.startPage()方法设置分页参数,然后调用Mapper接口的查询方法查询数据 public List<User> getUserList(int pageNum, int pageSize) { Page<User> page = new Page<>(pageNum, pageSize); userMapper.selectUserList(page); return page.getRecords(); } ``` 在上面的示例代码,我们使用PageHelper.startPage()方法设置分页参数,然后调用Mapper接口的selectUserList()方法查询数据。查询结果封装在Page对象,最后返回Page对象的记录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱人间

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

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

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

打赏作者

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

抵扣说明:

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

余额充值