java 分页_Spring Boot + MyBatis 如何借助PageHelper插件实现分页效果
概述
上文中已经介绍了Spring和MyBatis的整合,在上文的基础上我们加入了PageHelper这个插件,来实现MyBatis列表查询的分页效果
PageHelper是啥
PageHelper是一个强大实用的 MyBatis 分页插件,可以帮助我们快速的实现MyBatis分页功能,对MyBatis毫无侵入,只是对MyBatis的执行进行了拦截来实现分页效果。
**PageHelper 开源仓库 *
https://github.com/pagehelper/Mybatis-PageHelper
开始使用PageHelper
1.在pom.xml文件中加入PageHelper依赖,并在yml配置文件中加入分页配置
<dependency><groupId>com.github.pagehelpergroupId><artifactId>pagehelper-spring-boot-starterartifactId><version>1.2.5version>dependency>
yml配置
# PageHelper分页插件pagehelper: helperDialect: mysql reasonable: true supportMethodsArguments: trueparams: count=countSql
2. 创建工具包com.zhlab.demo.utils、com.zhlab.demo.utils.page,并创建相关类
页请求参数类:PageRequest.java
分页结果返回类:PageResult.java
分页工具类:PageUtil.java
/************************PageRequest.java************************/package com.zhlab.demo.utils.page;
/** * @ClassName PageRequest * @Description //分页请求参数类 * @Author singleZhang * @Email 405780096@qq.com * @Date 2020/10/31 0031 上午 11:00 **/public class PageRequest {
/** * 当前页码 */private int pageNum;/** * 每页数量 */private int pageSize;
public int getPageNum() {return pageNum;}public void setPageNum(int pageNum) {this.pageNum = pageNum;}public int getPageSize() {return pageSize;}public void setPageSize(int pageSize) {this.pageSize = pageSize;}
}
/************************PageResult.java************************/package com.zhlab.demo.utils.page;
import java.util.List;
/** * @ClassName PageResult * @Description //分页结果返回类 * @Author singleZhang * @Email 405780096@qq.com * @Date 2020/10/31 0031 上午 11:00 **/public class PageResult {
/** * 当前页码 */private int pageNum;/** * 每页数量 */private int pageSize;/** * 记录总数 */private long totalSize;/** * 页码总数 */private int totalPages;/** * 返回的各类数据模型 */private List<?> content;public int getPageNum() {return pageNum;}public void setPageNum(int pageNum) {this.pageNum = pageNum;}public int getPageSize() {return pageSize;}public void setPageSize(int pageSize) {this.pageSize = pageSize;}public long getTotalSize() {return totalSize;}public void setTotalSize(long totalSize) {this.totalSize = totalSize;}public int getTotalPages() {return totalPages;}public void setTotalPages(int totalPages) {this.totalPages = totalPages;}public List<?> getContent() {return content;}public void setContent(List<?> content) {this.content = content;}
}
/************************PageUtil.java************************/package com.zhlab.demo.utils;
import com.github.pagehelper.PageInfo;import com.zhlab.demo.utils.page.PageResult;
/** * @ClassName PageUtil * @Description //分页工具类 * @Author singleZhang * @Email 405780096@qq.com * @Date 2020/10/31 0031 上午 11:03 **/public class PageUtil {
/** * 将分页信息封装到统一的接口 * @param pageInfo * @return */public static PageResult getPageResult(PageInfo<?> pageInfo) {PageResult pageResult = new PageResult(); pageResult.setPageNum(pageInfo.getPageNum()); pageResult.setPageSize(pageInfo.getPageSize()); pageResult.setTotalSize(pageInfo.getTotal()); pageResult.setTotalPages(pageInfo.getPages()); pageResult.setContent(pageInfo.getList());return pageResult;}}
3. 在接口层UserController.java中新增分页测试方法findPage(PageRequest pageRequest)
package com.zhlab.demo.controller;
import com.github.pagehelper.PageHelper;import com.github.pagehelper.PageInfo;import com.zhlab.demo.model.SysAdminUser;import com.zhlab.demo.service.SysAdminUserService;import com.zhlab.demo.utils.PageUtil;import com.zhlab.demo.utils.page.PageRequest;import com.zhlab.demo.utils.page.PageResult;import io.swagger.annotations.ApiOperation;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.*;
import java.util.List;
/** * @ClassName UserController * @Description //用户接口层 * @Author singleZhang * @Email 405780096@qq.com * @Date 2020/10/31 0031 上午 9:43 **/@RestController@RequestMapping("/user")public class UserController {
@Autowired SysAdminUserService sysAdminUserService;
/* 方法注解 */@ApiOperation(value = "方法名:用户列表", notes = "获取用户列表")@GetMapping("/list")public List<SysAdminUser> list(){ List<SysAdminUser> list = sysAdminUserService.findAll();
return list;}
@ApiOperation(value = "方法名:用户列表分页", notes = "获取分页用户列表")@PostMapping(value="/findPage")public PageResult findPage(@RequestBody PageRequest pageRequest) {
startPage(pageRequest); //开启分页,pageHelp会自动拦截mybatis的sql List<SysAdminUser> list = sysAdminUserService.findAll();return PageUtil.getPageResult(new PageInfo<>(list));}
/** * 启动分页 * */private void startPage(PageRequest pageRequest){ PageHelper.startPage(pageRequest.getPageNum() == 0?1:pageRequest.getPageNum(), pageRequest.getPageSize()==0?5:pageRequest.getPageSize());}
}
4. 完事了?对!已经完事了,就这么简单,来看看执行效果吧
5. 输入参数,调试接口
总结
PageHelper的整合还是比较简单的,如果想更深入的了解,它还可以玩出花来,以后慢慢研究,加油打工人!
项目地址
https://gitee.com/kaixinshow/springboot-note
java 分页_Spring Boot + MyBatis 如何借助PageHelper插件实现分页效果相关推荐
- SpringBoot Mybatis解决使用PageHelper一对多分页问题
SpringBoot Mybatis解决使用PageHelper一对多分页问题 参考文章: (1)SpringBoot Mybatis解决使用PageHelper一对多分页问题 (2)https:// ...
- 【视频分享】尚硅谷Java视频教程_Spring Boot视频教程(下)整合篇
尚硅谷Java视频教程_Spring Boot视频教程(下)整合篇 巅峰之作,全网仅此一套,再无企及! SpringBoot是企业级开发的整体整合解决方案,特别用于快速构建微服务应用,旨在用最简单的方 ...
- SSM中使用Mybatis的PageHelper插件实现分页
效果 实现 前言 前面实现SSM整合以及实现原始手动分页参考 https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/85113289 添加 ...
- layui结合mybatis的pagehelper插件的分页通用的方法
总体思路: 1.前台查询的时候将当前页和页大小传到后台 2.后台将当前页,页大小以及数据与数据总数返回前台,前台显示完表格完数据之后显示分页插件. 前台页面: 准备查询条件的表单,与数据表格,分页di ...
- java sqlite mybatis_Spring boot + Mybatis + SQLite 搭建blog API
Spring boot + Mybatis + SQLite 搭建blog API 一.准备环境 二.创建一个SpringBoot项目 在此我就不再演示如何创建SpringBoot项目了,需要的请看[ ...
- hikari如何切换数据源_spring boot+mybatis 多数据源切换(实例讲解)
由于公司业务划分了多个数据库,开发一个项目会同事调用多个库,经过学习我们采用了注解+aop的方式实现的 1.首先定义一个注解类 @Retention(RetentionPolicy.RUNTIME) ...
- pom添加mysql依赖tomcat崩溃_Spring Boot + Mybatis + Spring MVC环境配置(一) :Spring Boot初始化,依赖添加...
最近在搭建一个Spring Boot + Mybatis + Spring MVC的环境,折腾来折腾去,两三天才搞定,记录下大概过程和遇到的错误 看一下Spring Boot官方的介绍 : Sprin ...
- vue表单中批量导入功能_spring boot mybatis+ vue 使用POI实现从Excel中批量导入数据
一.前端vue+element 1.前端使用element的upload组件来实现文件的上传 style="display: inline-flex;margin-right: 8px&qu ...
- druid 多数据源_Spring Boot + Mybatis 中 配置Druid多数据源并实现自由切换
概述 前面我们已经介绍过了对MyBatis.Druid的整合,接下来我们在之前的基础上做扩展,实现对Druid多数据源的配置以及动态切换数据源. 问题:多数据源使用场景有哪些呢? 回答:在业务发展中, ...
最新文章
- double salary = wage = 9999.99错误
- mysql insert into select大量数据插入比较慢_史上最全MySQL锁机制
- step4 . day3 目录访问函数
- java.lang.NoClassDefFoundError
- asp.net url传值,弹窗
- python# 完成“剪刀石头布游戏”:
- (八)用于人脸识别的Web API
- python 循环添加array_python常用的基本语句介绍
- mysql事务最好别用_理解完这些基本上能解决面试中MySql的事务问题
- python编写函数模拟猜数游戏、系统随机产生一个数_C语言编程:编写一个猜数的游戏,系统自动产生一个随机数,你来猜,程序给出提示,直到猜对为止。...
- 【22】基于java的电影院售票管理系统
- excel导出动态表头以及二级三级表头,还有数据库动态的数据来源
- 计算机文献检索的步骤实例,数据库检索方法与技巧(上)
- 单元测试总结反思_考试后的总结与反思600字
- 微信APP支付-签名问题
- Unity3d Google Play内购尝试客户端坑记
- win7硬盘分区软件_误删数据恢复软件,你应该拥有它!
- 2019年CSDN排名前10名大神
- 移动电信联通三大运营商的“流量不清零”,谁最坑?
- 三层架构的bussiness层没用?