MyBatis整合分页插件PageHelper的使用和说明

发布时间:2024年01月19日

????????MyBatis,作为目前流行的ORM框架,大大方便了日常开发。而对于分页查询,虽然可以通过SQL的limit语句实现,但是比较繁琐。而MyBatis PageHelper的出现,则解决了这一痛点。这里将介绍如何在Spring Boot、MyBatis的环境中通过MyBatis PageHelper高效方便的实现分页查询

?添加Maven依赖

<!--MyBatis 分页插件: MyBatis PageHelper-->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.5</version>
</dependency>

?添加配置

在application.properties配置文件中添加MyBatis PageHelper的配置项

# PageHelper 分页插件配置
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql

分页查询

????????通过 MyBatis PageHelper 进行分页查询实际上非常简单,只需在service(或mapper)方法执行查询前,调用一次 PageHelper.startPage(pageNum,pageSize) 来设置分页查询参数即可,其中pageNum 为记录页数,pageSize 为单页记录数量。此时service(或mapper)方法的查询结果就是分页后的结果了。如果期望获得相关的分页信息,还可以将查询结果封装到PageInfo对象中,以获得总页数、总记录数、当前页数等相关分页信息

????????现在通过一个实际示例,来具体演示操作,这里我们提供了一个分页查询的interface实现类

/**
     * QueryPageBean:存放currentPage、pageSize、queryString属性的对象
     * currentPage:页码
     * pageSize:每页记录数
     * queryString:查询条件
     * CheckItem:存放一条数据的所有属性的对象
     * PageResult:total、rows属性的对象
     * total:总记录数
     * rows:当前页结果
     */
    @Override
    public PageResult findPage(QueryPageBean queryPageBean) {
        //使用PageHelper
        //1设置分页条件
        PageHelper.startPage(queryPageBean.getCurrentPage(),queryPageBean.getPageSize());
        //2.正常查询
        List<CheckItem> checkItemList = checkItemMapper.findPage(queryPageBean);
        //3.获取分页信息
        PageInfo<CheckItem> checkItemPageInfo = new PageInfo<>(checkItemList);
        return new PageResult(checkItemPageInfo.getTotal(),checkItemPageInfo.getList());
    }

参数说明?

startPage

//第一个参数表示从第几页开始
//第二个参数表示一页多少条记录
//第三个参数表示是否返回总的真实记录数
PageHelper.startPage(currentPage,pageSize,true);

PageInfo

//创建一个PageInfo对象,将Page对象作为参数传入
//getPageNum ()方法获取当前页码
//getPageSize ()方法获取每页显示数量
//getTotal ()方法获取总记录数

文章来源:https://blog.csdn.net/m0_74007708/article/details/135704970
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。