前言

在使用Mybatis时,最头痛的就是写分页了,需要先写一个查询count的select语句,然后再写一个真正分页查询的语句,当查询条件多了之后,会发现真的不想花双倍的时间写 count 和 select,幸好我们有 pagehelper 分页插件,pagehelper 是一个强大实用的 MyBatis 分页插件,可以帮助我们快速的实现MyBatis分页功能,而且pagehelper有个优点是,分页和Mapper.xml完全解耦,并以插件的形式实现,对Mybatis执行的流程进行了强化,这有效的避免了我们需要直接写分页SQL语句来实现分页功能。

现在我把自己在项目中实现分页的方法总结如下:

1.导入Maven依赖

<!--分页插件-->
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>

2.controller中分页方法

 /**
  * @Description: 分页查询
  * @Param: waterloggingPreventionDto
  * @return com.graphsafe.api.msg.RestMessage(封装的返回值信息)
  * @author songwp
  * @date 2021/11/2 15:00
  */
@PostMapping(value = "getListForPage", produces = "application/json;charset=UTF-8")
public RestMessage getListForPage(@RequestBody WaterloggingPreventionDto waterloggingPreventionDto){
WaterloggingPreventionVo result = new WaterloggingPreventionVo();
List<WaterloggingPrevention> list = waterloggingPreventionService.getListForPage(waterloggingPreventionDto);
result.setWaterloggingPreventionList(list);
if (null != waterloggingPreventionDto.getCount()){
result.setTotal(waterloggingPreventionDto.getCount().intValue());
}
return new RestMessage(result);
}

3.service业务方法的实现

@Override
public List<WaterloggingPrevention> getListForPage(WaterloggingPreventionDto waterloggingPreventionDto) {
List<WaterloggingPrevention> list = new ArrayList<>();
if (waterloggingPreventionDto.getPage() != null && waterloggingPreventionDto.getLimit() != null){
PageHelper.startPage(waterloggingPreventionDto.getPage(),waterloggingPreventionDto.getLimit());
list = waterloggingPreventionMapper.getListForPage(waterloggingPreventionDto);
PageInfo<WaterloggingPrevention> pageInfo = new PageInfo<>(list);
waterloggingPreventionDto.setCount(pageInfo.getTotal());
}else {
list = waterloggingPreventionMapper.getListForPage(waterloggingPreventionDto);
}
return list;
}

4.serviceye业务方法接口

/**
* @Description:
* @ClassName: WaterloggingPreventionService
* @Author: songwp
* @Date: 2021/10/16 13:35
*/
public interface WaterloggingPreventionService {
List<WaterloggingPrevention> getListForPage(WaterloggingPreventionDto waterloggingPreventionDto);
}

5.Mapper方法接口

/**
* @Description:
* @ClassName: WaterloggingPreventionMapper
* @Author: songwp
* @Date: 2021/10/16 13:30
*/
@Mapper
public interface WaterloggingPreventionMapper {
List<WaterloggingPrevention> getListForPage(WaterloggingPreventionDto waterloggingPreventionDto); }

6.参数实体类

/**
* @author songwp
* @Description:
* @date 2021/10/29:47
*/
@Data
public class WaterloggingPreventionDto { @ApiModelProperty(value = "名称")
private String name; //分页
@ApiModelProperty(value = "当前页码")
private Integer page; //当前页第一页是0 @ApiModelProperty(value = "每页条数")
private Integer limit;//每页步长 @ApiModelProperty(value = "总条数")
private Long count;//总条数
}

7.post数据测试分页展示:

基于SpringBoot项目MyBatis分页插件实现分页总结的更多相关文章

  1. Springboot集成mybatis通用Mapper与分页插件PageHelper

    插件介绍 通用 Mapper 是一个可以实现任意 MyBatis 通用方法的框架,项目提供了常规的增删改查操作以及 Example 相关的单表操作.通用 Mapper 是为了解决 MyBatis 使用 ...

  2. SpringBoot使用Mybatis注解开发教程-分页-动态sql

    代码示例可以参考个人GitHub项目kingboy-springboot-data 一.环境配置 1.引入mybatis依赖 compile( //SpringMVC 'org.springframe ...

  3. Springboot 使用PageHelper分页插件实现分页

    一.pom文件中引入依赖 二.application.properties中配置以下内容(二选一方案) 第一种:pagehelper.helper-dialect=mysqlpagehelper.re ...

  4. Mybatis的分页插件PageHelper分页失效的原因

    引用博客:个人博客地址:https://alexaccele.github.io/ PageHelper是Mybatis的一个很好的分页插件,但要使用它的分页功能需要注意一下几点 1.导入相关包,例如 ...

  5. mybatis generator插件系列--分页插件

    1.首先定义分页插件 MysqlPagePlugin.java package com.demo.mybatis.plugin; import org.mybatis.generator.api.Co ...

  6. 逆向工程文件example完美结合使用PageHelper分页插件及分页不成功原因

    原生的mybatis需要手写sql语句,项目数据库表多了之后,可以让你写sql语句写到手软,于是mybatis官方提供了mybatis-generator:mybatis逆向工程代码生成工具,用于简化 ...

  7. 在angular中利用分页插件进行分页

    必需:angular分页js和css  当然还有angular.js   还需要bootstrap的css angular.min.js (下面我直接把插件粘贴上去了,以免有的同学还要去找.是不是很贴 ...

  8. 基于springboot+thymeleaf+springDataJpa自带的分页插件实现完整的动态分页

    实现百度搜索使用的前五后四原则,效果如下. 下面贴出代码,复制到前端即可,只需要域中放置page对象就可以.(springdatajpa自带的page 注意:第一页是按0开始算的) <div c ...

  9. Mybatis的插件 PageHelper 分页查询使用方法

    参考:https://blog.csdn.net/ckc_666/article/details/79257028 Mybatis的一个插件,PageHelper,非常方便mybatis分页查询,国内 ...

随机推荐

  1. Java跨平台原理(字节码文件,虚拟机)

    介绍 C/C++语言都直接编译成针对特定平台机器码.如果要跨平台,需要使用相应的编译器重新编译. Java源程序(.java)要先编译成与平台无关的字节码文件(.class),然后字节码文件再解释成机 ...

  2. 使用metaweblog API实现通用博客发布 之 API测试

    使用metaweblog API实现通用博客发布 之 API测试 使用博客比较少,一则是文笔有限,怕写出的东西狗屁不通,有碍观瞻, 二则是懒,很讨厌要登录到网站上写东西,也没有那么多时间(借口).个人 ...

  3. 学习PHP中的目录操作

    对于编程语言来说,文件和目录的操作是其最最基础的功能.就像我们日常中最常见的图片上传.文件上传之类的功能,都需要文件和目录操作的支持.今天我们先来简单地学习一下 PHP 中关于目录操作的一些类和函数. ...

  4. Shell系列(8)- 变量与变量分类(1)

    变量命名规则 开头为字符或下划线,名字中间中能有字母.数字和下划线组成; 变量的长度不超过255个字符; 变量名在有效的范围内必须是唯一的; 如再次定义则会替换上一个变量的值 在Bash中,变量的默认 ...

  5. dotnet 读 WPF 源代码笔记 布局时 Arrange 如何影响元素渲染坐标

    大家是否好奇,在 WPF 里面,对 UIElement 重写 OnRender 方法进行渲染的内容,是如何受到上层容器控件的布局而进行坐标偏移.如有两个放入到 StackPanel 的自定义 UIEl ...

  6. python学习笔记(十四)python实现发邮件

    import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart u ...

  7. CF960G-Bandit Blues【第一类斯特林数,分治,NTT】

    正题 题目链接:https://www.luogu.com.cn/problem/CF960G 题目大意 求有多少个长度为\(n\)的排列,使得有\(A\)个前缀最大值和\(B\)个后缀最大值. \( ...

  8. k8s deployment controller源码分析

    deployment controller简介 deployment controller是kube-controller-manager组件中众多控制器中的一个,是 deployment 资源对象的 ...

  9. SpringIOC 理论推导

    IOC理论实现 UserDao接口 public interface UserDao { void say(); } UserDaoImpl实现类 public class UserDaoImpl i ...

  10. Python3 网络通信 网络聊天室 文件传输

    Python3 网络通信 网络聊天室 文件传输 功能描述 该项目将实现一个文字和文件传输的客户端和服务器程序通信应用程序.它将传输和接收视频文件. 文本消息必须通过TCP与服务器通信,而客户端自己用U ...