基于SpringBoot+MySql的分页功能实现

news2024/11/24 0:06:03

        分页功能是为了缓解数据库的压力而实现的功能,实际上是将数据库中的数据分段查询出来,避免一次性将所有的数据全部查出来,查出来的部分数据通过前端的页面中不同的页数来展现出来

实现基础

mysql数据库中的查询语句中提供的limit关键字

该关键字可以限制查询的记录数,例如 select * from user limit 0,2

这样就可以从user表中的第0行数据开始,一共查询2条数据出来

通过的开始查询的位置与每次查询的数量这两个参数就可以查询出每次前端所显示的数据

实际上前端传回的参数是一般是页数与显示的数量,后端需要通过这两个参数确定查询起始位置,公式:

(页数-1)*显示的数量 = 起始查询的位置

实现步骤

1.引入分页插件的依赖

<!-- pagehelper依赖 -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.5</version>
</dependency>

2.在类中添加pageSize与pageNum属性

由于每一次的页面切换或者改变容量都需要将两个参数传回后端,重新进行一次请求,将两个需要接受的参数封装进入类中,每次使用对象进行参数的接收

3.在SpringBoot的核心配置文件中添加配置(yml文件中配置)

spring:
  main: allow-circular-references: true #开始支持spring循环依赖

4.在service层中添加分页处理的代码

PageHelper.startPage(pageNum, pageSize);
List<User> list = userDao.list();
PageInfo<User> pageInfo = new PageInfo<>(list);

通过该插件实现的过程中需要用到PageHelper类帮助我们进行分页功能的查询

每条代码的功能:

PageHelper.startPage(pageNum, pageSize)

        方法可以生成limit关键字并且帮助我们计算出limit语句中的第一个参数,并且将完整的limit语句通过动态sql的功能拼接到查询语句上

List<User> list = userDao.list()

        通过spring中生成的mybatis代理对象执行拼接后的sql语句,在这个过程中还会执行一条查询总记录数的sql语句,并且封装到PageInfo类的对象中

PageInfo<User> pageInfo = new PageInfo<>(list);

        将刚才查询的list集合封装到PageInfo类的对象中

PageInfo类的属性,可以看到有刚才提到的pageNum,pageSize,total,list属性,通过传回该对象回到前端即可以将数据都返回前端

 

5.前端实现

前端实现是基于elementUI中的分页组件实现的

该组件可以通过后端传回的总记录数来计算前端的页数,并且会自动生成对应的页码

 

我们也可以在后端手动查询并且计算总页数传回前端

前端代码:

<div class="block">
    <span class="demonstration">完整功能</span>
    <el-pagination
      @size-change="handleSizeChange"
      @current-change="handleCurrentChange"
      :current-page="currentPage4"
      :page-sizes="[100, 200, 300, 400]"
      :page-size="100"
      layout="total, sizes, prev, pager, next, jumper"
      :total="400">
    </el-pagination>
 </div>
​
<!--方法的代码-->
methods: {
      handleSizeChange(val) {
        <!--可以自行添加-->
        console.log(`每页 ${val} 条`);
      },
      handleCurrentChange(val) {
        <!--可以自行添加-->
        console.log(`当前页: ${val}`);
      }
},

这里是通过vue.js实现的前端页面,如果使用vue可以通过在表单中添加pageSize与pageNum元素,在每一次的切换页面或者改变页面容量时通过post请求将两个参数一并传回

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

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

相关文章

【026】基于vue+springboot的教务信息管理系统(含源码、数据库、课设报告、运行教程)

文章目录一、项目介绍二、源码获取一、项目介绍 基于Vue&#xff0b;springbootmysql的教务信息管理系统&#xff0c;UI设计主要采用element-ui&#xff0c;也使用了echarts做学生成绩的可视化界面&#xff0c;使用了xlsx表导入、导出数据&#xff0c;超级吊的教务管理系统&…

[操作系统笔记]页面置换算法

内容系听课复习所做笔记&#xff0c;图例多来自课程截图 常见的页面置换算法有&#xff1a;最优算法、随机算法、FIFO、LRU 随机算法顾名思义 FIFO(先进先出, First In First Out)算法&#xff1a;可能产生抖动现象和Belady现象 LRU&#xff08;最近最少使用算法&#xff09…

基于FFmpeg的视频播放器开发系列教程(二)

对于ffmpeg的架构介绍&#xff0c;请参考24岁“封神”雷霄骅的博客&#xff0c;他已离开江湖&#xff0c;但江湖仍有他的传说。 FFmpeg源代码结构图 - 编码&#xff1a;https://blog.csdn.net/leixiaohua1020/article/details/44226355 FFmpeg源代码结构图 - 解码&#xff1a;h…

【剪辑教程】如何给视频添加配音旁白,三种文字转语音方法教给你

视频剪辑完成&#xff0c;应该如何给视频配音&#xff1f;三种配音方法快来学 现在许多自媒体都居家创作短视频&#xff0c;那么给短视频配音的问题就摆着了面前&#xff0c;怎么给我们的短视频配音呢&#xff0c;接下来就教大家三种给视频添加配音的方法。 方法一&#xff1a…

Linux权限(1)

Linux权限(1) &#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;Linux &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 文章目录Linux权限(1)1. Linux权限的概念1.1 Linux上的用…

NLP之文本分类模型调优(模型基于tensorflow1.14)

项目链接&#xff1a;https://pan.baidu.com/s/1yOu0DogWkL8WOJksJmeiPw?pwd4bsg 提取码: 4bsg 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 --来自百度网盘超级会员v4的分享 1.基于上一篇文章中的文本分类项目进行精度调优&#xff0c;提升模型准确率&…

CET-4 week10 语法

0基础入门 point 谓语中自带 助动词 Such as ,I do like computer (强调且默认带有这个属性 大多数情况隐藏状态) 所有时态都有被动 do ->donewill do -> will be donehave down ->have been downbe doing ->be being donedid -> been downhad down ->ha…

flink-cdc-connectors-release-2.3.0自己编译

最新的cdc是2.21仅支持flink 1.13* 1.14*&#xff0c;而flink已经有1.15版本&#xff1b;自己编译支持1.15 下载官方包 https://github.com/ververica/flink-cdc-connectors/releases/tag/release-2.3.0 我下载的是source包&#xff0c;大家也可以去下载源码 1、下载后我们只需…

JUC并发编程第十三篇,AQS的作用与体系结构

JUC并发编程第十三篇&#xff0c;AQS的作用与体系结构一、AQS是什么&#xff1f;二、AQS在JUC中的地位与作用三、AQS体系结构一、AQS是什么&#xff1f; AbstractQueuedSynchronizer&#xff08;抽象队列同步器&#xff09;&#xff0c;是用来构建锁或者其它同步器组件的重量级…

[附源码]Node.js计算机毕业设计高校社团管理系统Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

java EE初阶 — 多线程案例单例模式

文章目录1单例模式主要模式1.1 饿汉模式1.2 懒汉模式2 单例模式安全性问题1单例模式主要模式 在某些场景中&#xff0c;有些特定的类只能输出一个实例&#xff08;对象&#xff09;&#xff0c;不应该创建多个实例&#xff0c;此时就可以使用 单例模式。 使用了单例模式后&…

5款轻量级小软件,第一款更是近期必备!

今天的主题是简洁&#xff0c;轻便&#xff0c;都是轻量级的小软件&#xff0c;界面都是非常简洁&#xff0c;而且无广告的。 1.自动抢火车票工具——12306Bypass 12306Bypass是一款专用于帮助用户抢购火车车票的工具&#xff0c;春运马上就到了&#xff0c;又到了抢票回家的…

Docker数据卷操作

1. 为什么使用数据卷 卷是在一个或多个容器内被选定的目录&#xff0c;为docker提供持久化数据或共享数据&#xff0c;是docker存储容器生成和使用的数据的首选机制。对卷的修改会直接生效&#xff0c;当提交或创建镜像时&#xff0c;卷不被包括在镜像中。 总结为两个作用&am…

功率放大器在压电传感器矩形阵列成像研究中的应用

实验名称&#xff1a;激光和压电传感器密集型矩形阵列成像质量的比较分析 研究方向&#xff1a;Lamb波、无损检测、缺陷成像和定位 测试目的&#xff1a; 将密集型矩形阵列分别与压电传感器检测技术和激光检测技术相结合&#xff0c;利用幅值成像和符号相干因子成像实现对铝板结…

vector模拟实现下篇及迭代器失效和深浅拷贝问题详解

文章目录1:构造函数1.1默认构造函数1.2迭代器构造1.3用n个val构造1.4拷贝构造2:operator3:析构函数和clear4:迭代器失效问题4.1:删除偶数深浅拷贝1:构造函数 1.1默认构造函数 vector():_start(nullptr),_end(nullptr),_endofstorage(nullptr){}1.2迭代器构造 template<clas…

手动安装Kylin5.0版本的过程

官方文档 https://kylin.apache.org/目前kylin3,4版本是有docker版本和安装包的,5.0只有docker没有安装包 安装包 https://kylin.apache.org/download/安装kylin5.0 Kylin5.0文档拉取镜像 docker pull apachekylin/apache-kylin-standalone:5.0.0运行镜像 docker run -d \ …

linux-jdk、nginx

一、安装nginx Nginx是一个web服务器也可以用来做负载均衡及反向代理使用&#xff0c; 目前使用最多的就是负载均衡&#xff0c;这篇文章主要介绍了centos8 安装 nginx Nginx是一种开源的高性能HTTP和反向代理服务器&#xff0c;负责处理Internet上一些最大站点的负载。 它…

数据结构——重点代码汇总

顺序表 设计算法&#xff0c;从顺序表L中删除值为x的元素。要求算法的时间复杂度为O(n)&#xff0c;空间复杂度为O(1)。设计算法&#xff0c;判断一个字符串是否是回文。如abc3cba是回文序列&#xff0c;而1331不是回文序列。从顺序存储结构的线性表a中删除第i个元素起的k个元…

SuperMap GIS 倾斜摄影数据处理 QA

一、倾斜摄影数据简介 倾斜摄影&#xff08;Oblique photography&#xff09;是指由一定倾斜角度的航摄相机所获取的影像。倾斜摄影技术是国际摄影测量领域近十几年发展起来的一项高新技术&#xff0c;该技术通过从一个垂直、四个倾斜、五个不同的视角同步采集影像&#xff0c…

深度学习训练营之天气识别P3

深度学习训练营之天气识别原文链接环境介绍前置工作设置GPU导入数据数据查看数据预处理加载数据可视化数据检查数据配置数据集prefetch()功能详细介绍&#xff1a;构建CNN网络编译模型训练结果可视化原文链接 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记…