PageHelper的分页查询:对比传统分页方法并详解实现步骤

        欢迎阅读我的博客!今天我们将介绍一种在Java项目中常用的分页插件:PageHelper。在这篇文章中,我们将解释PageHelper与传统分页方法的区别,并通过一个具体的实例来解释如何使用PageHelper进行分页查询。

 

一、PageHelper与传统分页的区别

        在Java Web项目中,常见的分页方式是通过SQL语句的limit关键字来实现。比如我们需要查询第10页的数据,每页显示20条,那么我们的SQL语句可能是这样的:

SELECT * FROM table LIMIT 180, 20

        这种分页方式的缺点是需要手动计算起始的索引,且对于不同的数据库,分页的SQL语句可能会有所不同。

        PageHelper是一个开源的MyBatis分页插件,它对分页的查询过程进行了封装,使得分页查询变得更为简单。你只需要传递页码和每页的大小,PageHelper会自动计算SQL语句中的limit参数。

        此外,PageHelper还提供了一些其他的功能,例如返回查询结果的总记录数,这在很多时候都非常有用。
 

二、PageHelper具体实现例子

        以下是一个使用PageHelper进行分页查询的例子:

        首先,我们定义一个PageBean类,用于封装分页查询的结果:

@Data
@AllArgsConstructor
@NoArgsConstructor
public class PageBean {
    private Long total;//总记录数
    private List rows;//数据列表
}

        然后,在控制器中,我们可以通过HTTP请求的参数来接收页码和每页的大小:
 

@GetMapping("/enrollmentPlan/page")
public Result page(@RequestParam(defaultValue = "1") Integer page,
                   @RequestParam(defaultValue = "10") Integer pageSize) {
    log.info("招生计划分页查询, 参数: {},{}", page, pageSize);
    PageBean pageBean = iEnrollmentPlanService.pageEnrollmentPlan(page, pageSize);
    return pageBean != null ? Result.success(pageBean) : Result.error("分页查询招生计划失败");
}

        在服务层,我们调用PageHelper.startPage(page, pageSize)方法设置分页参数,然后执行查询:

@Override
public PageBean pageEnrollmentPlan(Integer page, Integer pageSize) {
    if (Objects.isNull(page) || Objects.isNull(pageSize)) {
        throw new IllegalArgumentException("Page number or page size is null");
    }
    //设置分页参数(页数,每页size)
    PageHelper.startPage(page, pageSize);

    //执行查询
    List<EnrollmentPlan> enrList = enrollmentPlanMapper.selectList(null);
    Page<EnrollmentPlan> pg = (Page<EnrollmentPlan>) enrList;

    //封装PageBean对象
    PageBean pageBean = new PageBean(pg.getTotal(), pg.getResult());
    return pageBean;
}

        在这个例子中,我们通过PageHelper.startPage(page, pageSize)设置分页参数,然后执行查询。查询结束后,我们可以通过Page.getTotal()获取总记录数,通过Page.getResult()获取查询结果。

        总的来说,PageHelper的主要优点是使分页查询变得简单且高效,你不需要手动计算limit参数,也不需要关心不同数据库的SQL语句语法。希望这篇文章能帮助你理解和使用PageHelper进行分页查询。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MyBatis PageHelper 是一个 MyBatis 分页插件,能够快速、便捷的进行分页查询,支持多种数据库。使用 PageHelper 可以避免手写 SQL 语句进行分页操作,同时 PageHelper 支持物理分页和逻辑分页两种方式。 下面是使用 PageHelper 进行分页查询步骤: 1. 导入 PageHelper 依赖 Maven 项目在 pom.xml 文件中添加以下依赖: ``` <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.11</version> </dependency> ``` 2. 配置 PageHelper 在 MyBatis 的配置文件中添加以下配置: ``` <plugins> <plugin interceptor="com.github.pagehelper.PageInterceptor"> <property name="dialect" value="mysql"/> </plugin> </plugins> ``` 其中 dialect 属性指定了数据库类型,PageHelper 支持的数据库类型包括:oracle、mysql、mariadb、sqlite、hsqldb、postgresql、db2、sqlserver、informix、达梦、人大金仓、南大通用、神通、PostgreSQL9.3-9.5。 3. 使用 PageHelper 进行分页查询 在需要进行分页查询方法中使用 PageHelper.startPage 方法进行分页设置,然后调用查询方法获取查询结果。例如: ``` PageHelper.startPage(1, 10); // 第一页,每页显示 10 条记录 List<User> userList = userDao.selectUserList(); // 查询用户列表 PageInfo<User> pageInfo = new PageInfo<>(userList); // 封装分页结果 ``` 其中 PageHelper.startPage 方法接收两个参数,第一个参数为当前页码,第二个参数为每页显示的记录数。 最后使用 PageInfo 类对查询结果进行封装,得到分页结果。PageInfo 类中包含了分页信息和查询结果。 以上就是使用 MyBatis PageHelper 进行分页查询的基本步骤。需要注意的是,在使用 PageHelper 进行分页查询时,需要确保查询语句中不要使用 limit 关键字。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值