开发环境介绍
- 系统框架:Spring Boot
- 数据库:MySql
- 项目构建: Maven
- 开发工具: Intellij Idea
- 分页插件: PageHelper
插件配置
引入Maven依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>${pagehelper.version}</version>
</dependency>
配置application.properties
#-----------------------------------------Mybatis PageHelper分页-----------------------
# 分页插件会自动检测当前的数据库链接,自动选择合适的分页方式。
pagehelper.helper-dialect=mysql
# 分页合理化参数,默认为false。当参数设置为true时,pageNum<=0时会查询第一页,pageNum>pages(超过总数时),会查询最后一页
pagehelper.reasonable=true
# 为了支持startPage(Object params)方法,增加了该参数来配置参数映射,用于从对象中根据属性名取值
# 默认值pageNum=pageNum;pageSize=pageSize;count=countSql;reasonable=reasonable;pageSizeZero=pageSizeZero
pagehelper.params=count=countSql
# 支持通过Mapper接口参数来传递分页参数,默认值为false,分页插件会从查询方法的参数值中,自动根据上面params配置的字段中取值,查找到和时的值就会自动分页
pagehelper.support-methods-arguments=true
在controller中进行分页查询
/**
* 利用PageHelper实现分页查询
* @param response
* @param pageNum 页码
* @param pageSize 页大小
* @param orderBy 排序的依据
*/
@PostMapping("/mybatisPageHelper")
public void mybatisPageHelper(HttpServletResponse response, @RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "10") Integer pageSize, @RequestParam(defaultValue = "id") String orderBy) {
// 设置分页,不需要在Mapper接口或者XML中设置pageNum, pageSize, orderBy等参数
PageHelper.startPage(pageNum, pageSize, orderBy);
List<HelloWorld> helloWorlds = helloWorldDao.selectAll();
// 封装分页的多项属性, 包含分页查询结果
PageInfo<HelloWorld> pageInfo = new PageInfo<HelloWorld>(helloWorlds);
HttpUtils.printJsonToResponse(response, JSON.toJSONString(pageInfo));
}