Mybatis-分页插件

Mybatis-分页插件

  • 前言
  • 一、分页插件的使用步骤
    • 1.添加依赖
    • 2.配置分页插件
    • 3. 分页插件的使用


前言

可以通过分页插件在实现以下前端样式时更加方便:

首页 上一页 2 3 4 5 6 下一页 末页

limit index,pageSize
pageSize:每页显示的条数
pageNum:当前页的页码
index:当前页的起始索引,index=(pageNum-1)*pageSize
count:总记录数
totalPage:总页数
totalPage = count / pageSize;
if(count % pageSize != 0){
totalPage += 1;
}
pageSize=4,pageNum=1,index=0 limit 0,4
pageSize=4,pageNum=3,index=8 limit 8,4
pageSize=4,pageNum=6,index=20 limit 8,4


一、分页插件的使用步骤

1.添加依赖

<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.2.0</version>
</dependency>

2.配置分页插件

在MyBatis的核心配置文件中配置插件

    <plugins><!--配置分页插件--><plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin></plugins>

3. 分页插件的使用

    @Testpublic void testPage(){SqlSession sqlSession = SqlSessionUtil.getSqlSession();EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);//查询功能之前开启分页功能Page<Object> page = PageHelper.startPage(1, 4);List<Emp> list = mapper.selectByExample(null);//查询功能之后可以获取分页相关的所有数据PageInfo<Emp> pageInfo = new PageInfo<>(list, 5);list.forEach(System.out::println);System.out.println(pageInfo);}

在这里插入图片描述

  1. 在查询功能之前使用PageHelper.startPage(int pageNum, int pageSize)开启分页功能
    pageNum:当前页的页码
    pageSize:每页显示的条数
  2. 在查询获取list集合之后,使用PageInfo pageInfo = new PageInfo<>(List list, int navigatePages)获取分页相关数据
    list:分页之后的数据
    navigatePages:导航分页的页码数
  3. 分页相关数据
PageInfo{
pageNum=8, pageSize=4, size=2, startRow=29, endRow=30, total=30, pages=8,
list=Page{count=true, pageNum=8, pageSize=4, startRow=28, endRow=32, total=30,
pages=8, reasonable=false, pageSizeZero=false},
prePage=7, nextPage=0, isFirstPage=false, isLastPage=true, hasPreviousPage=true,
hasNextPage=false, navigatePages=5, navigateFirstPage4, navigateLastPage8,
navigatepageNums=[4, 5, 6, 7, 8]
}

pageNum:当前页的页码
pageSize:每页显示的条数
size:当前页显示的真实条数
total:总记录数
pages:总页数
prePage:上一页的页码
nextPage:下一页的页码
isFirstPage/isLastPage:是否为第一页/最后一页
hasPreviousPage/hasNextPage:是否存在上一页/下一页
navigatePages:导航分页的页码数
navigatepageNums:导航分页的页码,[1,2,3,4,5]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/140952.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

RASP初识

需要了解的东西. 是什么 拦截日志&#xff1a;rasp/logs/alarm/alarm.log RASP&#xff08;Runtime application self-protection&#xff09;运行时应用自我保护。 官方英译应用程序不应将大部分运行时保护委托给外部设备。应用程序应该能够自我保护&#xff08;即&#xf…

如何进行销售漏斗管理?

本文将为大家讲解&#xff1a;如何进行销售漏斗管理&#xff1f; 销售漏斗管理是现代销售管理的核心概念之一。它将销售过程分解为一系列阶段&#xff0c;从而帮助销售团队更有效地跟踪和管理潜在客户。本文将深入探讨销售漏斗管理的方法&#xff0c;并结合简道云CRM的实际应用…

LeetCode 494.目标和 (动态规划 + 性能优化)二维数组 压缩成 一维数组

494. 目标和 - 力扣&#xff08;LeetCode&#xff09; 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 或 - &#xff0c;然后串联起所有整数&#xff0c;可以构造一个 表达式 &#xff1a; 例如&#xff0c;nums [2, 1] &#xff0c;可以在 2…

Java中如何将String类型的2023年09月21日这个值变成DATE相关的类型

Java中如何将String类型的2023年09月21日这个值变成DATE 可以通过使用Java中的SimpleDateFormat类完成。以下是一个例子&#xff1a; import java.text.SimpleDateFormat; import java.text.ParseException; import java.util.Date;public class Main {public static void ma…

Linux动态库

定义&#xff1a;动态函数库&#xff0c;是在程序执行时动态&#xff08;临时&#xff09;由目标程序去调用 优点&#xff1a; 调用时不复制&#xff0c;程序运行时动态加载到内存&#xff0c;供程序调用&#xff0c;系统只加载一次&#xff0c;多个程序可以共用&#xff0c;…

大厂面试之算法篇

目录 前言 算法对于前端来说重要吗&#xff1f; 期待你的答案 算法 如何学习算法 算法基础知识 时间复杂度 空间复杂度 前端 数据结构 数组 最长递增子序列 买卖股票问题 买卖股票之交易明细 硬币找零问题 数组拼接最小值 奇偶排序 两数之和 三数之和 四数之…

9.19号作业

2> 完成文本编辑器的保存工作 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QFontDialog> #include <QFont> #include <QMessageBox> #include <QDebug> #include <QColorDialog> #include <QColor&g…

Python 打印素数

"""打印素数介绍&#xff1a;素数是指只有两个正因数&#xff08;1和它本身&#xff09;的自然数&#xff0c;而且必须大于1。例如&#xff1a;2、3、5、7、11、13、17、19、23、29等等都是素数。小于2的数不是素数&#xff0c;因为它没有两个正因数。例如&…

对话ChatGPT:AIGC时代下,分布式存储的应用与前景

随着科技的飞速发展&#xff0c;我们正步入一个被称为AIGC时代的全新阶段&#xff0c;人工智能、物联网、大数据、云计算成为这个信息爆炸时代的主要特征。自2022年11月以来&#xff0c;ChatGPT的知名度迅速攀升&#xff0c;引发了全球科技爱好者的极大关注&#xff0c;其高超的…

java框架-Springboot3-web开发

文章目录 自动配置默认效果WebMvcAutoConfigurationWebMvcConfigurer接口静态资源访问首页Favicon缓存 自定义静态资源路径1、配置方式2、代码方式 路径匹配规则内容协商默认支持json配置支持xml内容协商原理自定义支持ymal 模板引擎模板引擎Thymeleaf整合基础语法遍历判断属性…

静态资源的动态引入

有常用的2种方式&#xff1a; 1、css中的静态路径 2、img中的src静态路径 运行的环境是打包后的图片路径&#xff0c;而打包后的图片通常会生成一个文件指纹&#xff0c;而我们在写代码时&#xff0c;写的是源码中的路径和文件名&#xff0c;如果是静态路径&#xff0c;则会自动…

升级iOS17后可以降级吗?iOS17退回iOS16方法教程分享

iOS 17已上线几天&#xff0c;从网上用户的反馈和媒体机构的报告来看&#xff0c;iOS17系统对旧机型来说并不友好&#xff0c;除了电池续航下降以外&#xff0c;占用大量储存空间&#xff0c;BUG也不少。 苹果于 9 月 7 日发布了 iOS 16.6.1 版本&#xff0c;如果升级iOS17后发…

What is the difference between Parseval‘s theorem and Plancherel Theorem

Plancherel定理是调和分析里的一个结论, 最早由Michel Plancherel证明, 其可表述为 对同时属于 L 1 ( R ) L^{1}(R) L1(R) 和 L 2 ( R ) L^{2}(R) L2(R) 的函数f来说,其傅立叶变换F属于 L 2 ( R ) L^{2}(R) L2(R) ,且傅立叶变换是等距变换.数学表述为&#xff1a; ∥ f ^ ∥ 2…

正确生成hashCode和equals方法,以及联合Map,set集合达到去重目的

Idea自动生成HashCode和equals视频链接 https://live.csdn.net/v/330419实体类 对name和age两个属性重写hashCode&#xff0c;equals方法 package TestEqualsHashCode; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok…

使用命令行快速创建Vite项目

一、构建项目 在终端中使用如下命令行&#xff1a; npm create vite 二、定义项目名称 三、选择项目类型 Vanilla是我们常用的JavaScript&#xff0c;Vue和React是常用前端框架&#xff0c;可以根据自己的需要进行选择 通过上下键进行选择&#xff0c;按下回车进行确认 创建…

Python中使用EMD(经验模态分解)

在Python中使用EMD&#xff08;经验模态分解&#xff09;进行信号分解时&#xff0c;通常可以设置信号分解的数目。EMD算法的目标是将信号分解成多个称为“本征模态函数”&#xff08;Intrinsic Mode Functions&#xff0c;简称IMF&#xff09;的成分&#xff0c;每个IMF都代表…

2023/09/20 day4 qt

做一个动态指针钟表 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPainter> //绘制事件类 #include <QPaintEvent> //画家类 #include <QTime> #include <QTimer> #include <QTimerEvent> QT_BEGIN…

简单而经典:Java中的冒泡排序算法详解

当谈到简单的排序算法时&#xff0c;冒泡排序&#xff08;Bubble Sort&#xff09;通常是其中之一。虽然它不是最高效的排序算法之一&#xff0c;但它的简单性和易于理解使它成为学习排序算法的良好起点。在本文中&#xff0c;我们将详细介绍Java中的冒泡排序。 冒泡排序的基本…

linux安装配置 flume

目录 一 解压安装包 二 配置部署 &#xff08;1&#xff09;修改配置 &#xff08;2&#xff09;下载工具 &#xff08;3&#xff09;创建配置文件 &#xff08;4&#xff09;启动监听测试 &#xff08;5&#xff09;flume监控文件 一 解压安装包 这里提供了网盘资源 链…

js中的数据结构:栈,队列,链表,字典哈希表,树

栈&#xff1a;先进后出 队列&#xff1a;先进先出 链表&#xff1a; 单链表&#xff1a; 双链表&#xff1a; 环形链表&#xff1a;最后一个数据的next指针不是指向null&#xff0c;指向的是任意之间的一个数据&#xff0c;形成一个环 数组和链表的区别&#xff1a; 字典和哈…