瑞吉外卖 - 员工信息分页查询功能(7)

news2024/11/28 22:49:07

某马瑞吉外卖单体架构项目完整开发文档,基于 Spring Boot 2.7.11 + JDK 11。预计 5 月 20 日前更新完成,有需要的胖友记得一键三连,关注主页 “瑞吉外卖” 专栏获取最新文章。
相关资料:https://pan.baidu.com/s/1rO1Vytcp67mcw-PDe_7uIg?pwd=x548
提取码:x548

文章目录

    • 1.需求分析
    • 2.代码开发
      • 2.1 执行流程分析
      • 2.2 具体实现
    • 3.功能测试

1.需求分析

系统中的员工数量很多的时候,如果在一个页面中将所有员工全部展示出来,会显得比较乱,也不便于查看。因此,一般的系统都会以分页的方式来展示列表数据。

2.代码开发

2.1 执行流程分析

在正式开发之前,我们先梳理一下程序的执行流程:

  1. 客户端发送 ajax 请求,将分页查询参数(page、pageSize、name)提交到服务器;
  2. 服务端 Controller 接收客户端提交的数据并调用 Service 进行数据库查询;
  3. Service 调用 Mapper 操作数据库,查询分页数据;
  4. Controller 将查询到的分页数据响应给客户端;
  5. 客户端收到分页数据并通过 Element UI 的 Table 组件进行展示。

刷新一下【员工管理】页面,我们就可以看到前端具体发送的请求 URL 如下:

可见,在发送 GET 请求 /employee/page 的时候携带了分页的参数,当前页(page)为第一页,每页大小(pageSize)为 10。

那么上面提到的 name 参数有在哪儿呢?其实我们的员工管理页面中还支持基于员工姓名的模糊查询,当我们使用该功能的时候就会在上面的基础上再传一个 name 参数:

OK,基于上述分析我们可以基本确定如下几个点:

  1. 需要处理一个 /employee/page 请求;
  2. 该请求会携带 page、pageSize、name 三个参数用于分页查询;

2.2 具体实现

由于本项目使用的是 MyBatis Plus,因此我们不需要单独引入如 pagehelper-spring-boot-starter 的 Starter 启动器依赖。因为 MyBatis Plus 的 BaseMapper<T> 中带有分页查询方法,但是需要配置分页插件才能充分发挥其功能。

config 包下新建 MybatisPlusConfig 配置类用于配置 MyBatis Plus 的分页插件,完整代码如下:

package cn.javgo.reggie_take_out.config;

import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.context.annotation.Bean;

@SpringBootConfiguration
public class MyBatisPlusConfig {

    /**
     * 配置 MyBatis Plus 拦截器,用于分页查询
     * @return MyBatis Plus 拦截器
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        // 创建 MyBatis Plus 拦截器
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        // 添加分页拦截器
        mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        // 返回拦截器
        return mybatisPlusInterceptor;
    }
}

然后在 EmployeeController 类中处理对应的请求,相关部分代码如下:

@RestController
@RequestMapping("/employee")
public class EmployeeController {
    /**
     * 处理分页查询员工请求
     * @param page 当前页码
     * @param pageSize 每页显示的记录数
     * @param name 员工姓名
     * @return 响应对象
     */
    @GetMapping("/page")
    public R<Page<Employee>> page(int page,int pageSize,String name){
        log.info("page = {},pageSize = {},name = {}" ,page,pageSize,name);
        // 1.创建 Page 对象
        Page<Employee> pageInfo = new Page<>(page, pageSize);

        // 2.构造条件查询对象
        QueryWrapper<Employee> queryWrapper = new QueryWrapper<>();
        // 设置模糊查询条件(根据姓名进行模糊查询)
        queryWrapper.like(StringUtils.isNotEmpty(name),"name",name);
        // 根据更新时间降序排序
        queryWrapper.orderByDesc("update_time");

        // 3.执行分页查询
        employeeService.page(pageInfo,queryWrapper);

        // 4.返回结果
        return R.success(pageInfo);
    }
    
    // 省略其他代码
}

3.功能测试

重启应用,登陆成功后便会自动按照分页条件查询出对应的员工信息:

当然,由于我们的数据量比较小所以看不出分页效果,因为前端默认传递的分页参数是 page=1 和 pageSize=10,对应在 static/backend/page/food/list.html 中的如下位置,可根据需要进行合理修改(当然,后端也可以自行设置而不采取前端的逻辑):

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

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

相关文章

NodeJs之调试

关于调试 当我们只专注于前端的时候&#xff0c;我们习惯性F12&#xff0c;这会给我们带来安全与舒心的感觉。 但是当我们使用NodeJs来开发后台的时候&#xff0c;我想噩梦来了。 但是也别泰国担心&#xff0c;NodeJs的调试是很不方便&#xff01;这是肯定的。 但是还好&…

Spring MVC优雅处理业务异常

本文中&#xff0c;我会描述如何在应用程序的不同层次&#xff0c;优雅地处理业务异常。 异常定义 BusinessException基类定义如下&#xff0c;注意异常中携带业务错误码&#xff0c;方便前端处理异常&#xff1a; public class BusinessException extends RuntimeException…

哪些云渲染服务用于多GPU渲染?

众所周知&#xff0c;GPU渲染 可以使用显卡代替CPU进行渲染&#xff0c;可以显着加快渲染速度&#xff0c;因为GPU主要是为快速图像渲染而量身定制的。GPU的诞生是为了应对图形密集型应用程序&#xff0c;这些应用程序会给CPU带来负担并阻碍计算性能。GPU渲染的原理是在多个数据…

信创办公–基于WPS的EXCEL最佳实践系列 (图表)

信创办公–基于WPS的EXCEL最佳实践系列 &#xff08;图表&#xff09; 目录 应用背景操作步骤1、创建图表和图形2、添加其他数据序列3、在源数据的行与列之间切换4、添加图例5、调整图表和图形的大小6、修改图表和图形参数7、应用图表布局和样式8、设置图表和图形的位置9、插入…

4面都过了,最后要价10K,HR说我不尊重华为....

在不知道一个公司的普遍薪资水平的时候&#xff0c;很多面试者不敢盲目的开价&#xff0c;但就因为这样可能使得面试官怀疑你的能力。一位网友就在网上诉说了自己的经历&#xff0c;男子是一位测试员&#xff0c;已经有九年的工作经历了&#xff0c;能力自己觉得还不错。 因为…

单片机课设 - 液晶显示屏显示时间(实验板实现)

目录 前言&#xff1a;本代码涉及的主要知识&#xff1a;代码&#xff08;实验板实现代码&#xff09;&#xff1a; 前言&#xff1a; 设计本代码的主要目的是为了完成期末作业&#xff0c;即在液晶显示屏上显示、时间、日期、温度&#xff0c;以及用按键控制时间、温度的显示。…

Leetcode50. Pow(x, n)

Every day a Leetcode 题目来源&#xff1a;50. Pow(x, n) 解法1&#xff1a;递归 代码&#xff1a; /** lc appleetcode.cn id50 langcpp** [50] Pow(x, n)*/// lc codestart class Solution { public:double myPow(double x, int n){if (n 0)return 1.0;if (n < 0)re…

华为OD机试真题 Java 实现【获取最大软件版本号】【2023Q1 100分】

一、题目描述 Maven版本号定义,<主版本>.<次版本><增量版本>-<里程碑版本> 举例3.1.4-beta 其中,主版本和次版本都是必须的,主版本,次版本,增量版本由多位数字组成,可能包含前导零,里程碑版本由字符串组成。 <主版本>.<次版本>增…

纯代码的3D玫瑰花,有个这个还怕女朋友不开心?

先上效果图&#xff1a; 再上代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style>import url("https://fonts.googleapis.com/css2?familyNico…

Anicube NFT 作品集

Anicube 是韩国娱乐公司 Cube Entertainment 和区块链公司 Animoca Brands 的合资公司 Anicube Entertainment 推出的 IP 空间。其主题是音乐元宇宙&#xff0c;各种基于 K-pop 的表演和推广活动将在主舞台和音乐家星球上举行。 此外&#xff0c;这个系列的购买者还将获得特别奖…

web自动化测试:selenium怎么实现关键字驱动

要做 ui 自动化测试&#xff0c;使用关键字驱动可以说是必须会的一种测试方式&#xff0c;它既可以在纯代码的自动化程序中运行&#xff0c;也可以在测试平台中使用。 使用纯代码方式时&#xff0c;自动化工程师先写好一个通用的程序&#xff0c;其他手工测试人员只需要把执行…

gitlab的CICD

大体步骤4步 1.购买阿里云服务器centos 7.6 2.在服务器上安装gitlab-ce 3.在服务器上安装gitlab-runner 4.在gitlab创建一个项目&#xff0c;拉到本地修改后再提交&#xff0c;触发自动部署 视频教程 看不懂文章的&#xff0c;可以看这个视频&#xff0c;超详细gitlab-cicd-…

国产信创适配-东方通TongWeb安装,使用记录

之前项目使用的tomcat容器,需适配东方通 tongweb容器,记录下在国产麒麟ky10.aarch64 服务器下安装东方通容器的过程(对于麒麟内核服务器操作起来和centos7大致一样) 东方通容器是商业的,没有免费版本,企业级安装是公司和东方通联系给了lisence 经过实际测试发现,东方通提…

深度学习技巧应用15-自动机器学习Autogluon的应用技巧

大家好,我是微学AI,今天给大家介绍一下深度学习技巧应用15-自动机器学习Autogluon的应用技巧,Autogluon是一个开源的自动化机器学习工具包,Autogluon的开发目标是为机器学习从业者提供一个高效、易用、可扩展的自动化机器学习工具,让机器学习变得更加简单快捷。本文采用儿…

绘制混淆矩阵(MatLab/Python)

本文主要简单介绍如何绘制混淆矩阵 首先混淆矩阵是机器学习中总结分类模型预测结果的情形分析表&#xff0c;以矩阵形式将数据集中的记录按照真实的类别与分类模型预测的类别判断两个标准进行汇总。 其实混淆矩阵就是用来判断我们的算法的分类准确度的一个可视化矩阵 1…

得物AI平台-KubeAI推理训练引擎设计和实践

1.KubeAI介绍 KubeAI是得物AI平台&#xff0c;是我们在容器化过程中&#xff0c;逐步收集和挖掘公司各业务域在AI模型研究和生产迭代过程中的需求&#xff0c;逐步建设而成的一个云原生AI平台。KubeAI以模型为主线提供了从模型开发&#xff0c;到模型训练&#xff0c;再到推理…

本科毕业生10大高薪专业出炉,IT行业赢麻了

据环球网报道&#xff0c;现在大学毕业生转行率高达80%&#xff01; 非常后悔&#xff01;有不少粉丝向播妞倾诉&#xff0c;曾经以为读了大学就能找到体面的工作&#xff0c;实际上是掉入了天坑专业&#xff0c;成了现实版孔乙己。 大学生找不到对口好工作&#xff0c;似乎已成…

golang web学习随便记6-模板引擎

以下代码是几乎最简单的一个模板&#xff0c;{{ . }} 表示执行模板时将嵌入的数据 <!DOCTYPE html> <html><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8"><title>Go Web 编程</title> <…

openwrt修改web网页默认端口

使用SSH登录openwrt后台&#xff1b; openwrt 中默认使用的web服务器是uhttpd&#xff0c; 进入配置文件路径&#xff1a; cd /etc/config/ 使用vim编辑器修改uhttpd文件 vi uhttpd 修改以上标红部分后面的端口 vim编辑器打开uhttpd 文件 修改完成后点键盘ESC退出编辑状态&a…

《计算机网络—自顶向下方法》 Wireshark实验(四):TCP 协议分析

在因特网协议族&#xff08;Internet Protocol Suite&#xff09;中&#xff0c;TCP 层是位于 IP 层之上&#xff0c;应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接&#xff0c;但是 IP 层不提供这样的流机制&#xff0c;而是提供不可靠的包交换。…