关于SpringBoot中使用分页插件pagehelper

524 阅读1分钟

一、手写sql

select * from user limit (pageNum-1)*pageSize,pageSize;

  • pageNum:当前页数,从第一页开始;
  • pageSize:每页显示的行数 例如,每页显示两行数据,查询第二页的数据,也就是:

select * from user limit 2,2;

二、SpringBoot整合pagehelper插件

1. 引入依赖(注意引入的是spring-boot-starter版本的)

<dependency>
  <groupId>com.github.pagehelper</groupId>
  <artifactId>pagehelper-spring-boot-starter</artifactId>
  <version>1.2.5</version>
</dependency>

如果引入的是这个会不起作用

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

二、在application.yml中配置属性

#pagehelper属性配置
pagehelper:
  #启用合理化,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页
  reasonable: true
  #标识是哪一种数据库
  helper-dialect: mysql
  #支持通过 Mapper 接口参数来传递分页参数,默认值false,分页插件会从查询方法的参数值中,自动根据上面 params 配置的字段中取值,查找到合适的值时就会自动分页
  support-methods-arguments: true
  #如果 pageSize=0 就会查询出全部的结果(相当于没有执行分页查询)
  page-size-zero: false

三、demo实例

// 返回所有用户列表
@Override
public PageInfo<UserVO> listUser(Integer pageNum, Integer pageSize) {
    PageHelper.startPage(pageNum,pageSize);
    // 查询数据库
    List<UserDO> userDOList = userDOMapper.listUser();
    // UserDO->UserVO...
    PageInfo pageInfo = new PageInfo(userVOList);
    return pageInfo;
}

需要注意:只有紧跟在PageHelper.startPage()语句后面的查询语句才有分页效果