分页插件 PageHelper的使用

本文介绍了PageHelper,一个用于MyBatis框架的分页插件,详细讲解了如何在Maven项目中引入依赖,配置分页拦截器,以及在代码中实际使用的步骤和SQL日志输出。
摘要由CSDN通过智能技术生成

介绍

PageHelper是适用于MyBatis框架的一个分页插件。它利用MyBatis拦截器,在查询数据库时拦截SQL,并修改SQL以实现分页效果。
官方文档:https://pagehelper.github.io/

PageHelper使用

1、引入依赖

首先,你需要在项目的构建配置文件中导入PageHelper的依赖。如果你使用的是Maven项目,可以在pom.xml文件中添加如下依赖:

        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.1.10</version>
        </dependency>

2、配置分页拦截器插件

创建MyBatisConfig文件,配置分页拦截器插件

@Configuration
public class MyBatisConfig {
    
    @Bean
    public PageInterceptor pageInterceptor(){
        PageInterceptor pageInterceptor = new PageInterceptor();
        Properties properties = new Properties();
        properties.setProperty("helperDialect", "mysql");
        pageInterceptor.setProperties(properties);
        return pageInterceptor;
    }

}

3、代码使用

一旦配置完成,你就可以在代码中使用PageHelper了。通常在执行MyBatis的查询方法之前,你需要调用PageHelper的startPage方法,并传入页码和每页显示的记录数。例如:

PageHelper.startPage(pageNum, pageSize);  
List<User> users = userMapper.selectByExample(example);

在上述代码中,pageNum是页码,pageSize是每页显示的记录数。调用startPage方法后,紧接着执行的MyBatis查询方法将会被分页。查询的结果会被封装在一个分页结果对象中,你可以通过该对象获取总页数、总记录数等信息。

代码示例:

    @GetMapping("/selectList")
    public PageInfo<User> select(){
        //获取第1页的3条记录
        PageHelper.startPage(1,3);
        // 默认查询所有记录,PageHelper分页拦截器拦截,即在执行相关Sql之前会拦截自动加上limit 1,3
        List<User> list = userService.list();
        // 用PageInfo包装list
        PageInfo<User> userPageInfo = new PageInfo<>(list);
        return userPageInfo;
    }

输出SQL日志:

==>  Preparing: SELECT count(0) FROM user
==> Parameters: 
<==    Columns: count(0)
<==        Row: 7
<==      Total: 1
==>  Preparing: SELECT id,name,age,email FROM user LIMIT ?
==> Parameters: 3(Integer)
<==    Columns: id, name, age, email
<==        Row: 1, Jone, 18, test1@baomidou.com
<==        Row: 2, Jack, 20, test2@baomidou.com
<==        Row: 3, Tom, 28, test3@baomidou.com
<==      Total: 3

可以看到,先查询了表的记录,后查询记录并添加了limit SQL语句

分页结果与展示
用PageInfo包装对象获取到的分页信息

{
    "total": 7,
    "list": [
        {
            "id": 1,
            "name": "Jone",
            "age": 18,
            "email": "test1@baomidou.com"
        },
        {
            "id": 2,
            "name": "Jack",
            "age": 20,
            "email": "test2@baomidou.com"
        },
        {
            "id": 3,
            "name": "Tom",
            "age": 28,
            "email": "test3@baomidou.com"
        }
    ],
    "pageNum": 1,
    "pageSize": 3,
    "size": 3,
    "startRow": 1,
    "endRow": 3,
    "pages": 3,
    "prePage": 0,
    "nextPage": 2,
    "isFirstPage": true,
    "isLastPage": false,
    "hasPreviousPage": false,
    "hasNextPage": true,
    "navigatePages": 8,
    "navigatepageNums": [
        1,
        2,
        3
    ],
    "navigateFirstPage": 1,
    "navigateLastPage": 3
}
  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值