SpringBoot 使用 MyBatis 分页插件 PageHelper 进行分页查询
前言:本文档使用的是 SpringBoot,如果是 Spring 还需要在 MyBatis 配置 xml 中配置拦截器,并且 PageHelper 是针对 MyBatis 的,MyBatis 的集成不在本文档中叙述,请先集成 MyBatis。
一、引入PageHelper分页插件
引入的方式有两种,可以是导入Jar包,也可以使用 Maven 来构建,本文档将使用 Maven 来构建项目,如果你希望使用导入Jar包的方式进行集成,请从下面的链接下载Jar包:
https://oss.sonatype.org/content/repositories/releases/com/github/pagehelper/pagehelper/
http://repo1.maven.org/maven2/com/github/pagehelper/pagehelper/
在 pox.xml 中添加PageHelper分页插件依赖
<!-- 分页插件pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.10</version>
</dependency>
由于是SpringBoot项目,这里使用 pagehelper-spring-boot-starter ,如果是 spring 应使用 pagehelper
二、配置application.yml
# 分页配置
pagehelper:
helper-dialect: mysql
reasonable: true
support-methods-arguments: true
params: count=countSql
改代码不加入,程序也可以正常运行,请根据实际情况进行添加。
三、在service层中使用PageHelper插件
(1)最简单的分页查询,直接传入
public List<Article> selectArticleListByTag(TTag tag, int page, int rows) {
//使用分页插件,核心代码就这一行,页数、每页行数
PageHelper.startPage(page, rows);
//在 mapper.xml 中不要加 limit 分页,插件会自动拦截和添加 limit 分页
return articleMapper.selectArticleListByTag(tag);
}
分页的同时,获取总数量,从而计算总页数
(2)EasyUI为例
由于我使用了EasyUI,DataGrid控件的分页需要返回总行数,所以拿来展示比较经典
先定义一个 Page 变量,这个类在com.github.pagehelper.Page,然后依然是 PageHelper.startPage(page, rows),然后进行正常的查询,在查询后pages.getTotal()就可以获取到总行数了,拿到总行数,就可以计算出总页数
EasyUIDataGrid.java:
package com.sun123.springboot.entity.easyui;
import java.util.List;
public class EasyUIDataGrid {
//当前页显示的数据 ?表示任意类型
private List<?> rows;
//表中总个数,不是总页数
private long total;
public List<?> getRows() {
return rows;
}
public void setRows(List<?> rows) {
this.rows = rows;
}
public long getTotal() {
return total;
}
public void setTotal(long total) {
this.total = total;
}
}
UserService.java:
//查询所有学生信息
EasyUIDataGrid showAllStudents(int page, int rows);
UserServiceImpl.java:
public EasyUIDataGrid showAllStudents(int page, int rows) {
EasyUIDataGrid dataGrid = new EasyUIDataGrid();
Page pages = PageHelper.startPage(page,rows);
List<User> userList = userMapper.selectByExample(null);
dataGrid.setRows(userList);
dataGrid.setTotal(pages.getTotal());
return dataGrid;
}
AdminController.java:
@PostMapping("/showAllStudents")
@ResponseBody
public EasyUIDataGrid showAllStudent(int page, int rows){
EasyUIDataGrid dataGrid = userService.showAllStudents(page, rows);
return dataGrid;
}
四、关于页数传入异常的情况
有同学会担心,如果传入的页数是负数或者大于总页数会不会报错?是否需要进行边界检查?
其实,如果传入的页数是负数,PageHelper 会展示第一页的数据;如果传入的页数大于总页数,PageHelper会展示最后一页的数据。并不会报错,所以使用这个插件比较省心,不用担心异常的页数传入导致业务抛出异常。
参考:https://www.neilren.com/Article/1003276
SpringBoot 使用 MyBatis 分页插件 PageHelper 进行分页查询的更多相关文章
- ssm下使用分页插件PageHelper进行分页
1. 导入maven依赖: <dependency> <groupId>com.github.pagehelper</groupId> <artifactId ...
- 基于Mybatis分页插件PageHelper
基于Mybatis分页插件PageHelper 1.分页插件使用 1.POM依赖 PageHelper的依赖如下.需要新的版本可以去maven上自行选择 <!-- PageHelper 插件分页 ...
- SpringBoot集成MyBatis的分页插件 PageHelper
首先说说MyBatis框架的PageHelper插件吧,它是一个非常好用的分页插件,通常我们的项目中如果集成了MyBatis的话,几乎都会用到它,因为分页的业务逻辑说复杂也不复杂,但是有插件我们何乐而 ...
- SpringBoot添加对Mybatis分页插件PageHelper的支持
1.修改maven配置文件pom.xml,添加对pageHelper的支持: <!--pagehelper--> <dependency> <groupId>com ...
- SpringBoot Mybatis 分页插件PageHelper
添加maven配置: <!-- 分布插件 --> <dependency> <groupId>com.github.pagehelper</groupId&g ...
- Springboot集成mybatis通用Mapper与分页插件PageHelper
插件介绍 通用 Mapper 是一个可以实现任意 MyBatis 通用方法的框架,项目提供了常规的增删改查操作以及 Example 相关的单表操作.通用 Mapper 是为了解决 MyBatis 使用 ...
- Mybatis的分页插件PageHelper
Mybatis的分页插件PageHelper 项目地址:http://git.oschina.net/free/Mybatis_PageHelper 文档地址:http://git.oschina. ...
- mybatis分页插件PageHelper的使用(转)
Mybatis 的分页插件PageHelper-4.1.1的使用 Mybatis 的分页插件 PageHelper 项目地址:http://git.oschina.net/free/Mybatis_P ...
- MyBatis学习总结_17_Mybatis分页插件PageHelper
如果你也在用Mybatis,建议尝试该分页插件,这一定是最方便使用的分页插件. 分页插件支持任何复杂的单表.多表分页,部分特殊情况请看重要提示. 想要使用分页插件?请看如何使用分页插件. 物理分页 该 ...
随机推荐
- hystrix实战之javanica
spingboot2.0.3集成hystrix的,访问dashboard的另外一种方式: https://blog.csdn.net/qq_38455201/article/details/80783 ...
- (等比数列)P1423 小玉在游泳 洛谷
题目描述 小玉开心的在游泳,可是她很快难过的发现,自己的力气不够,游泳好累哦.已知小玉第一步能游2米,可是随着越来越累,力气越来越小,她接下来的每一步都只能游出上一步距离的98%.现在小玉想知道,如果 ...
- 新买苹果电脑,mac系统中小白应该了解哪些东西?
本文旨在分享新买了mac电脑,应该做哪些设置,帮助苹果电脑小白轻松上手使用mac电脑,当然,新电脑肯定是需要安装各种软件,这里,小编推荐一下可以看看小编写的mac软件装机必备Mac 装机必备软件推荐, ...
- golang rpc介绍
rpc包提供了通过网络或其他I/O连接对一个对象的导出方法的访问.服务端注册一个对象,使它作为一个服务被暴露,服务的名字是该对象的类型名.注册之后,对象的导出方法就可以被远程访问.服务端可以注册多个不 ...
- 怎么停止yum安装并kill进程
1. ctrl + z 2. ps -ef | grep 正在安装的包名称 3. kill -9 进程Id
- eclipse_maven换源
1. 手动新增一个xml文件: <?xml version="1.0" encoding="UTF-8"?> <settings xmlns= ...
- java io系列08之 File总结
本文对File的API和常用方法进行介绍. 转载请注明出处:http://www.cnblogs.com/skywang12345/p/io_08.html File 介绍 File 是“文件”和“目 ...
- Golang入门教程(四)变量声明
Go 语言变量名由字母.数字.下划线组成,其中首个字母不能为数字. 一.Go的语言结构 1.Go的语言基础部分由这几个部分组成 包声明 引入包 函数 变量 语句&表达式 注释 比如下面这个简单 ...
- Hive基础概念、安装部署与基本使用
1. Hive简介 1.1 什么是Hive Hives是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能. 1.2 为什么使用Hive ① 直接使用 ...
- 解析ArcGis拓扑——根据拓扑错误记录提取shp文件、导出Excel表格
在ArcGis拓扑检查的流程——以面重叠检查为例中讲述了如何在ArcGis进行拓扑检查与修改. 在实际操作中,有时我们还需要将ArcGis拓扑检查的结果制作成报告或者提取错误信息反馈作业方. 本文仍然 ...