前言
在业务系统开发中,有一个很重要的功能是明细查询。而在明细查询的功能中,有一个很重要的功能分页查询。毕竟无论是谁都不可能将大量数据从数据库一次性查出,这样的话对于数据库,后端,前端,用户都是巨大的压力。
诚然,分页逻辑我们可以自己封装成一个公共注入方法给大家用。但是其实现在有一个项目能够很好分页功能,这样我们也没必要重复造轮子了。
应用
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的结构在解析一下后封装成对应的前端类。
效果
可以看到payment的结果集是这样的,返回的内容相当丰富。大家可以写个适配器类来从pageinfo 中提取自己需要的内容构成对应的前端结果。