Springboot Mybatis使用pageHelper如何实现分页查询
作者:小目标青年
Mybatis使用pageHelper实现分页查询
以下介绍实战中数据库框架使用的是mybatis,对整合mybatis此处不做介绍。
使用pageHelper实现分页查询其实非常简单,共两步:
- 一、导入依赖
- 二、添加配置
那么开始,
第一步
pom.xml添加依赖:
<!--分页插件 pagehelper --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <!-- 特别注意版本问题 --> <version>1.2.3</version> </dependency>
第二步
aplication.yml添加配置:
#分页pageHelper pagehelper: helper-dialect: mysql reasonable: true support-methods-arguments: true
·helper-dialect
:
配置使用哪种数据库语言,不配置的话pageHelper也会自动检测
·reasonable
:
配置分页参数合理化功能,默认是false。
#启用合理化时,如果pageNum<1会查询第一页,如果pageNum>总页数会查询最后一页;
#禁用合理化时,如果pageNum<1或pageNum>总页数会返回空数据。
·params
:
为了支持startPage(Object params)方法,增加了该参数来配置参数映射,用于从对象中根据属性名取值;
可以配置 pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值, 默认值为
pageNum=pageNum;pageSize=pageSize;count=countSql; reasonable=reasonable;pageSizeZero=pageSizeZero
·support-methods-arguments
:
支持通过Mapper接口参数来传递分页参数
默认值false,分页插件会从查询方法的参数值中
自动根据上面 params 配置的字段中取值,查找到合适的值时就会自动分页
第三步
先将需要查询的数据库表建起来,简单填充数据:
然后mapper层写上查询该表数据返回List的方法:
//查询所有 List<User> queryUserInfo();
在service以及impl也写上相关方法:
//查询所有 List<User> queryUserInfo();
@Override public List<User> queryUserInfo() { return userMapper.queryUserInfo(); }
相关的mapper.xml就不做过多介绍了,就是一个查询。
ok,接下来开始使用分页插件,配合上面的查询实现分页查询:
在userService上添加 分页查询方法2个:
List<User> findAllUserByPageF(int pageNum,int pageSize); PageInfo<User> findAllUserByPageS(int pageNum, int pageSize);
userServiceImpl上添加 分页查询实现:
@Override public List<User> findAllUserByPageF(int pageNum, int pageSize) { // TODO Auto-generated method stub PageHelper.startPage(pageNum, pageSize); List<User> lists = userMapper.queryUserInfo(); return lists; } @Override public PageInfo<User> findAllUserByPageS(int pageNum, int pageSize) { // TODO Auto-generated method stub PageHelper.startPage(pageNum, pageSize); List<User> lists = userMapper.queryUserInfo(); PageInfo<User> pageInfo = new PageInfo<User>(lists); return pageInfo; }
最后在controller写上测试接口,
@GetMapping("/testPageHelper1") public PageInfo<User> testPageHelper1(){ PageInfo<User> queryResult = userService.findAllUserByPageS(1, 5); return queryResult; } @GetMapping("/testPageHelper2") public List<User> testPageHelper2(){ List<User> queryResult = userService.findAllUserByPageF(1, 5); return queryResult; }
然后用POSTMAN 分别调接口看看结果:
最后附上分别调用10次的性能分析简图(来自DRUID):
OK,简单实战介绍到此。
PageInfo的参数解释,可以看看我这篇:
https://www.jb51.net/program/320636vi5.htm
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。