概述

上文中已经介绍了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插件实现分页效果相关推荐

  1. SpringBoot Mybatis解决使用PageHelper一对多分页问题

    SpringBoot Mybatis解决使用PageHelper一对多分页问题 参考文章: (1)SpringBoot Mybatis解决使用PageHelper一对多分页问题 (2)https:// ...

  2. 【视频分享】尚硅谷Java视频教程_Spring Boot视频教程(下)整合篇

    尚硅谷Java视频教程_Spring Boot视频教程(下)整合篇 巅峰之作,全网仅此一套,再无企及! SpringBoot是企业级开发的整体整合解决方案,特别用于快速构建微服务应用,旨在用最简单的方 ...

  3. SSM中使用Mybatis的PageHelper插件实现分页

    效果 实现 前言 前面实现SSM整合以及实现原始手动分页参考 https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/85113289 添加 ...

  4. layui结合mybatis的pagehelper插件的分页通用的方法

    总体思路: 1.前台查询的时候将当前页和页大小传到后台 2.后台将当前页,页大小以及数据与数据总数返回前台,前台显示完表格完数据之后显示分页插件. 前台页面: 准备查询条件的表单,与数据表格,分页di ...

  5. java sqlite mybatis_Spring boot + Mybatis + SQLite 搭建blog API

    Spring boot + Mybatis + SQLite 搭建blog API 一.准备环境 二.创建一个SpringBoot项目 在此我就不再演示如何创建SpringBoot项目了,需要的请看[ ...

  6. hikari如何切换数据源_spring boot+mybatis 多数据源切换(实例讲解)

    由于公司业务划分了多个数据库,开发一个项目会同事调用多个库,经过学习我们采用了注解+aop的方式实现的 1.首先定义一个注解类 @Retention(RetentionPolicy.RUNTIME) ...

  7. pom添加mysql依赖tomcat崩溃_Spring Boot + Mybatis + Spring MVC环境配置(一) :Spring Boot初始化,依赖添加...

    最近在搭建一个Spring Boot + Mybatis + Spring MVC的环境,折腾来折腾去,两三天才搞定,记录下大概过程和遇到的错误 看一下Spring Boot官方的介绍 : Sprin ...

  8. vue表单中批量导入功能_spring boot mybatis+ vue 使用POI实现从Excel中批量导入数据

    一.前端vue+element 1.前端使用element的upload组件来实现文件的上传 style="display: inline-flex;margin-right: 8px&qu ...

  9. druid 多数据源_Spring Boot + Mybatis 中 配置Druid多数据源并实现自由切换

    概述 前面我们已经介绍过了对MyBatis.Druid的整合,接下来我们在之前的基础上做扩展,实现对Druid多数据源的配置以及动态切换数据源. 问题:多数据源使用场景有哪些呢? 回答:在业务发展中, ...

最新文章

  1. double salary = wage = 9999.99错误
  2. mysql insert into select大量数据插入比较慢_史上最全MySQL锁机制
  3. step4 . day3 目录访问函数
  4. java.lang.NoClassDefFoundError
  5. asp.net url传值,弹窗
  6. python# 完成“剪刀石头布游戏”:
  7. (八)用于人脸识别的Web API
  8. python 循环添加array_python常用的基本语句介绍
  9. mysql事务最好别用_理解完这些基本上能解决面试中MySql的事务问题
  10. python编写函数模拟猜数游戏、系统随机产生一个数_C语言编程:编写一个猜数的游戏,系统自动产生一个随机数,你来猜,程序给出提示,直到猜对为止。...
  11. 【22】基于java的电影院售票管理系统
  12. excel导出动态表头以及二级三级表头,还有数据库动态的数据来源
  13. 计算机文献检索的步骤实例,数据库检索方法与技巧(上)
  14. 单元测试总结反思_考试后的总结与反思600字
  15. 微信APP支付-签名问题
  16. Unity3d Google Play内购尝试客户端坑记
  17. win7硬盘分区软件_误删数据恢复软件,你应该拥有它!
  18. 2019年CSDN排名前10名大神
  19. 移动电信联通三大运营商的“流量不清零”,谁最坑?
  20. 三层架构的bussiness层没用?

热门文章

  1. 沫沫金:PS快速扣头发丝【详细教程】
  2. Java记录 -9- 面向对象之封装
  3. bash ./php-memcache.sh,PHP+shell脚本操作Memcached和Apache Status的实例分享
  4. toString、equals方法进阶
  5. 为什么宝藏世界不显示服务器,宝藏世界前期萌新常见问题以及解决方法
  6. 图论 —— AOE 网与关键路径
  7. 病毒侵袭(HDU-2896)
  8. 图像模糊处理(信息学奥赛一本通-T1128)
  9. 3.9 创建数据类型
  10. 计算机中桌面指的是什么情况,windows的桌面是指什么