前言

在业务系统开发中,有一个很重要的功能是明细查询。而在明细查询的功能中,有一个很重要的功能分页查询。毕竟无论是谁都不可能将大量数据从数据库一次性查出,这样的话对于数据库,后端,前端,用户都是巨大的压力。
诚然,分页逻辑我们可以自己封装成一个公共注入方法给大家用。但是其实现在有一个项目能够很好分页功能,这样我们也没必要重复造轮子了。

应用

pom依赖

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

配置文件application.yml

pagehelper:
  helperDialect: mysql
  reasonable: true
  supportMethodsArguments: true
  params: count=countSql

这个配置主要是用于确定数据库方言然后生成指定的sql,由于笔者用的是mysql,因此使用的是mysql的配置,如果使用其他数据库的话可以查找下具体的配置。

代码

    @Override
    public PageInfo<Payment> queryAll(int pageNum, int pageSize) {
        QueryWrapper queryWrapper = new QueryWrapper();
        queryWrapper.isNotNull("id");
        PageHelper.startPage(pageNum,pageSize);
        List<Payment> payments = paymentDao.selectList(queryWrapper);
        PageInfo<Payment> pageInfo = new PageInfo<>(payments,pageSize);
        System.out.println(pageInfo.toString());
        return pageInfo;
    }

其实代码的核心的是PageHelper.startPage(pageNum,pageSize);这句话,在这里声明了查询页和页大小后,就会自动注入到接下来的
List<Payment> payments = paymentDao.selectList(queryWrapper);中,并返回对应的一些分页信息,比如共有多少页,当前第几页之类的。
当然这个是需要使用PageInfo作为接收才能带出来的哈。当然要是结果不太行的话可以将PageInfo的结构在解析一下后封装成对应的前端类。

效果

patment
可以看到payment的结果集是这样的,返回的内容相当丰富。大家可以写个适配器类来从pageinfo 中提取自己需要的内容构成对应的前端结果。