【全栈】SprintBoot+vue3迷你商城-细节解析(2):分页

【全栈】SprintBoot+vue3迷你商城-细节解析(2):分页

往期的文章都在这里啦,大家有兴趣可以看一下

后端部分:

【全栈】SprintBoot+vue3迷你商城(1)
【全栈】SprintBoot+vue3迷你商城(2)
【全栈】SprintBoot+vue3迷你商城-扩展:利用python爬虫爬取商品数据
【全栈】SprintBoot+vue3迷你商城(3)
【全栈】SprintBoot+vue3迷你商城(4)
【全栈】SprintBoot+vue3迷你商城(5)
【全栈】SprintBoot+vue3迷你商城(6)

前端部分:

【全栈】SprintBoot+vue3迷你商城-扩展:vue的基本用法

【全栈】SprintBoot+vue3迷你商城-扩展:vue3项目创建及目录介绍

【全栈】SprintBoot+vue3迷你商城(7)

【全栈】SprintBoot+vue3迷你商城(8)

【全栈】SprintBoot+vue3迷你商城(9)

【全栈】SprintBoot+vue3迷你商城(10)

细节解析部分:

【全栈】SprintBoot+vue3迷你商城-细节解析(1):Token、Jwt令牌、Redis、ThreadLocal变量

补充部分:

【全栈】SprintBoot+vue3迷你商城(11)

文章目录

  • 【全栈】SprintBoot+vue3迷你商城-细节解析(2):分页
    • 1.什么是PageHelper
      • 主要特点
      • 使用示例
        • Maven 依赖
        • 代码示例
    • 2.PageBean有什么用
    • 3.PageHelper.startPage(pageNum, pageSize);
      • 主要用途
      • 应该放在何处
    • 4.Element Plus分页组件
    • 5.总结

1.什么是PageHelper

PageHelper 是一个用于简化分页操作的插件,主要用于 MyBatis 框架中。它可以帮助开发者非常方便地实现数据库查询结果的分页功能,而无需手动编写 SQL 语句中的 LIMIT 或者其他数据库特定的分页语法。PageHelper 支持多种数据库,包括 MySQL、Oracle、SQL Server 等,并且提供了简单的 API 来实现分页。

主要特点

  1. 简单易用:只需在执行查询之前调用 PageHelper 的静态方法设置分页参数,即可自动完成分页操作。
  2. 支持多数据库:PageHelper 支持多种数据库,能够根据不同的数据库生成相应的分页语句。
  3. 灵活配置:可以通过多种方式进行配置,如通过代码动态配置或通过配置文件进行全局配置。
  4. 丰富的功能:除了基本的分页功能外,还提供了一些额外的功能,比如排序等。

使用示例

下面是一个使用 PageHelper 进行分页查询的基本示例:

Maven 依赖

首先,在你的项目中添加 PageHelper 的 Maven 依赖(如果你使用的是 Maven 构建工具):

<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>版本号</version>
</dependency>
代码示例

假设你有一个 MyBatis Mapper 接口和对应的 XML 映射文件,你可以这样使用 PageHelper:

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import java.util.List;public List<User> getUsersByPage(int pageNum, int pageSize) {// 设置分页参数 - 当前页码,每页显示的数量PageHelper.startPage(pageNum, pageSize);// 执行查询 - 注意这里的查询不需要自己写分页逻辑List<User> users = userMapper.selectAllUsers();// PageInfo 是 PageHelper 提供的一个封装类,包含了分页信息PageInfo<User> pageInfo = new PageInfo<>(users);return pageInfo.getList(); // 返回当前页的数据列表
}

在这个例子中,PageHelper.startPage(pageNum, pageSize); 会拦截后续的第一个查询请求,并自动为其添加分页功能。然后,你就可以像平常一样执行查询操作,PageHelper 会在后台为你处理所有与分页相关的细节。

所以说,PageHelper 是一个强大的工具,它可以极大地简化 MyBatis 中的分页操作,使得开发者可以更专注于业务逻辑的实现,而不是被繁琐的分页逻辑所困扰。通过简单的 API 调用,就能轻松实现对不同数据库的支持以及高效的分页查询。

2.PageBean有什么用

  1. 数据封装PageBean 可以将查询结果和分页信息一起封装,便于返回给前端进行展示。
  2. 前后端分离:在前后端分离架构中,PageBean 作为 API 响应的一部分,提供给前端所需的所有分页信息,使得前端可以轻松实现分页逻辑。
  3. 统一处理分页逻辑:通过定义一个通用的 PageBean 类,可以在整个项目中统一处理分页相关的逻辑,减少重复代码。
  4. 增强可读性和维护性:将分页相关的属性集中在一个类中,有助于提高代码的可读性和可维护性。

3.PageHelper.startPage(pageNum, pageSize);

这行代码有什么用?应该放在何处?

PageHelper.startPage(pageNum, pageSize); 这行代码是用于在 MyBatis 查询中启用分页功能的。具体来说,它会在你执行查询操作之前设置分页参数,并拦截后续的第一个查询请求,自动为这个查询添加分页逻辑(例如,在 SQL 语句中添加 LIMIT 子句)。这意味着你不需要手动修改你的 SQL 查询来实现分页。

主要用途

  • 启用分页:通过调用 PageHelper.startPage(pageNum, pageSize); 来指定当前页码 (pageNum) 和每页显示的记录数 (pageSize)。
  • 自动处理分页逻辑:之后执行的任何 MyBatis 查询都会被自动加上分页条件,而不需要你在 SQL 中手动添加这些条件。

应该放在何处

通常,你应该将 PageHelper.startPage(pageNum, pageSize); 放在你要进行分页查询的操作之前,紧挨着你的查询方法调用。这是因为 PageHelper 使用了 MyBatis 的插件机制来拦截查询请求,并在实际执行查询前对其进行修改以添加分页支持。

例如在上一期的代码中:

PageHelper.startPage(pageNum, pageSize);List<Goods> goodsList = goodsService.getGoodsList(searchKey);

在这段代码中,PageHelper.startPage(pageNum, pageSize); 的作用是为接下来的 MyBatis 查询设置分页参数。这意味着,在调用 PageHelper.startPage(pageNum, pageSize); 之后的第一个查询操作将会被自动加上分页逻辑(例如添加 LIMIT 子句)。因此,将 PageHelper.startPage(pageNum, pageSize); 紧接在实际执行数据库查询之前是非常重要的。

4.Element Plus分页组件

Element Plus 是一个流行的 Vue 3 UI 库,提供了丰富的组件来帮助开发者快速构建美观且功能强大的用户界面。其中,el-pagination 组件用于实现分页功能,支持多种布局和事件处理,可以方便地集成到你的项目中。

组件源码:

<template><el-pagination background layout="prev, pager, next" :total="1000" />
</template>

我们结合上期代码,便可理解其用法

<template>
<div style="display: flex; justify-content: center;"><el-pagination background layout="prev, pager, next" :total="goodsCount" :page-size="pageSize":current-page="currentPage"  @current-change="handlePageChange" /></div>
</template><script>const goodsList = async () => {let result = await getGoodsListService(currentPage.value,pageSize.value,searchKey.value);goodsListModel.value = result.data['items'];goodsCount.value = result.data['total']console.log(result.data['total'])
}
goodsList();const searchKey = ref('')const currentPage = ref(1);const pageSize = ref(12);const handlePageChange = (newPage) => {console.log(newPage)currentPage.value = newPage;goodsList();
};
</script>

5.总结

本期对分页的一些细节进行了总结,下期将继续补充开发中的一些细节问题。

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

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

相关文章

kubeadm拉起的k8s集群证书过期的做法集群已奔溃也可以解决

kubeadm拉起的k8s集群证书过期的做法 这个是很久之前遇到的了&#xff0c;今天有空&#xff08;心血来潮&#xff09;就都回忆回忆写在这里为爱发光&#xff0c;部分内容来自arch先生&#xff08;死党&#xff09;的帮助。有时候有很多部门提了建k8s的需求&#xff0c;有些是临…

Webpack 基础入门

一、Webpack 是什么 Webpack 是一款现代 JavaScript 应用程序的静态模块打包工具。在 Web 开发中&#xff0c;我们的项目会包含各种类型的文件&#xff0c;如 JavaScript、CSS、图片等。Webpack 可以将这些文件打包成一个或多个文件&#xff0c;以便在浏览器中高效加载。它就像…

torchsparse安装过程的问题

1、项目要求torchsparse githttps://github.com/mit-han-lab/torchsparse.gitv1.4.0 2、torch1.8.1cu111 nvcc--version&#xff1a;11.1 这个版本的cuda匹配的gcc、g经常是7.5。设置为7.5. &#xff08;这个gcc、g版本修改不一定&#xff0c;可以先进行后面的&#xff0c…

嵌入式音视频开发(二)ffmpeg音视频同步

系列文章目录 嵌入式音视频开发&#xff08;零&#xff09;移植ffmpeg及推流测试 嵌入式音视频开发&#xff08;一&#xff09;ffmpeg框架及内核解析 嵌入式音视频开发&#xff08;二&#xff09;ffmpeg音视频同步 嵌入式音视频开发&#xff08;三&#xff09;直播协议及编码器…

iOS App的启动与优化

App的启动流程 App启动分为冷启动和热启动 冷启动&#xff1a;从0开始启动App热启动&#xff1a;App已经在内存中&#xff0c;但是后台还挂着&#xff0c;再次点击图标启动App。 一般对App启动的优化都是针对冷启动。 App冷启动可分为三个阶段&#xff1a; dyld&#xff1a…

oppo,汤臣倍健,康冠科技25届春招内推

oppo&#xff0c;汤臣倍健&#xff0c;康冠科技25届春招内推 ①康冠科技25届春招 【职位】算法、软件、硬件、技术&#xff0c;结构设计&#xff0c;供应链&#xff0c;产品&#xff0c;职能&#xff0c;商务 【一键内推】https://sourl.cn/2Mm9Lk 【内推码】EVBM88 ②汤臣倍健…

centos 9 时间同步服务

在 CentOS 9 中&#xff0c;默认的时间同步服务是 chrony&#xff0c;而不是传统的 ntpd。 因此&#xff0c;建议使用 chrony 来配置和管理时间同步。 以下是使用 chrony 配置 NTP 服务的步骤&#xff1a; 1. 安装 chrony 首先&#xff0c;确保系统已安装 chrony。 在 CentOS…

解锁 Python 导入系统:从基础到进阶的深度指南

本文全面解读 Python 导入系统&#xff0c;从导入机制的基础概念&#xff0c;如模块、包的导入方式&#xff0c;到查找、加载模块的详细过程&#xff0c;再到导入系统的高级特性和应用场景&#xff0c;通过丰富示例、直观图表和对比分析&#xff0c;助你深入理解并熟练运用导入…

DDoS技术解析

这里是Themberfue 今天我们不聊别的&#xff0c;我们聊聊著名的网络攻击手段之一的 DDoS&#xff0c;看看其背后的技术细节。 DoS 了解 DDoS 前&#xff0c;先来讲讲 DoS 是什么&#xff0c;此 DoS 而不是 DOS 操作系统啊。1996年9月6日&#xff0c;世界第三古老的网络服务提供…

docker安装kafka,并通过springboot快速集成kafka

目录 一、docker安装和配置Kafka 1.拉取 Zookeeper 的 Docker 镜像 2.运行 Zookeeper 容器 3.拉取 Kafka 的 Docker 镜像 4.运行 Kafka 容器 5.下载 Kafdrop 6.运行 Kafdrop 7.如果docker pull wurstmeister/zookeeper或docker pull wurstmeister/kafka下载很慢&#x…

C++ 与 Java 的对比分析:除法运算中的错误处理

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: Java 文章目录 &#x1f4af;前言&#x1f4af;C中的除法错误处理&#x1f4af;Java中的除法错误处理&#x1f4af;C与Java错误处理的对比&#x1f4af;错误处理的优化和实践&#x1f4af;小结 &#x1f4af;前言 在…

LLM之循环神经网络(RNN)

在人工智能的领域中&#xff0c;神经网络是推动技术发展的核心力量。今天&#xff0c;让我们深入探讨循环神经网络&#xff08;RNN&#xff09; 一、神经网络基础 &#xff08;1&#xff09;什么是神经网络 神经网络&#xff0c;又称人工神经网络&#xff0c;其设计灵感源于人…

SQL sever数据导入导出实验

1.创建数据库TCP-H &#xff08;1&#xff09;右键“数据库”&#xff0c;点击“新建数据库”即可 &#xff08;2&#xff09;用sql语言创建&#xff0c;此处以创建数据库DB_test为例&#xff0c;代码如下&#xff1a; use master;go--检查在当前服务器系统中的所有数据里面…

让编程变成一种享受-明基RD320U显示器

引言 作为一名有着多年JAVA开发经验的从业者&#xff0c;在工作过程中&#xff0c;显示器的重要性不言而喻。它不仅是我们与代码交互的窗口&#xff0c;更是影响工作效率和体验的关键因素。在多年的编程生涯中&#xff0c;我遇到过各种各样的问题。比如&#xff0c;在进行代码…

计算机网络(涵盖OSI,TCP/IP,交换机,路由器,局域网)

一、网络通信基础 &#xff08;一&#xff09;网络通信的概念 网络通信是指终端设备之间通过计算机网络进行的信息传递与交流。它类似于现实生活中的物品传递过程&#xff1a;数据&#xff08;物品&#xff09;被封装成报文&#xff08;包裹&#xff09;&#xff0c;通过网络…

图像处理篇---基本OpenMV图像处理

文章目录 前言1. 灰度化&#xff08;Grayscale&#xff09;2. 二值化&#xff08;Thresholding&#xff09;3. 掩膜&#xff08;Mask&#xff09;4. 腐蚀&#xff08;Erosion&#xff09;5. 膨胀&#xff08;Dilation&#xff09;6. 缩放&#xff08;Scaling&#xff09;7. 旋转…

SpringMVC重定向接口,参数暴露在url中解决方案!RedirectAttributes

OK&#xff0c;首先描述下业务场景&#xff0c;终端数量限制登录 1.首先访问项目login的get接口 2.输入账号密码点击登录后&#xff0c;会请求login的POST接口 3.后台对终端数量逻辑处理不允许登录跳回到登录页面 4.因代码原因需在后台进行多次重定向接口&#xff0c;最后跳…

Spring Boot01(注解、)---java八股

Spring Boot中常用注解及其底层实现 1、SpringBootApplication注解&#xff1a; SpringBootApplication注解&#xff1a;这个注解标识了一个SpringBoot工程&#xff0c;它实际上是另外三个注解的组合&#xff0c;这三个注解是&#xff1a; aSpringBootConfiguration&#xff1a…

✨2.快速了解HTML5的标签类型

✨✨HTML5 的标签类型丰富多样&#xff0c;每种类型都有其独特的功能和用途&#xff0c;以下是一些常见的 HTML5 标签类型介绍&#xff1a; &#x1f98b;结构标签 &#x1faad;<html>&#xff1a;它是 HTML 文档的根标签&#xff0c;所有其他标签都包含在这个标签内&am…

eNSP防火墙综合实验

一、实验拓扑 二、ip和安全区域配置 1、防火墙ip和安全区域配置 新建两个安全区域 ip配置 Client1 Client2 电信DNS 百度web-1 联通DNS 百度web-2 R2 R1 三、DNS透明代理相关配置 1、导入运营商地址库 2、新建链路接口 3、配置真实DNS服务器 4、创建虚拟DNS服务器 5、配置D…