java后端实现信息分页查询

java后端实现信息分页查询

需求分析

  1. 在一个页面展示大量的用户信息不便于观看,因此采用分页展示的方法。
  2. 用户可以通过分页条自己选择查看的数量。
  3. 可以用条件过滤一些信息,在查询的同时还需要分页展示

代码开发

  1. 流程:

    1. 页面发送ajax请求,将分页查询参数(page,pageSize,name)提交到服务端
    2. 服务端Controller接收到页面提交的数据并调用Service查询数据
    3. Service调用Mapper操作数据库,查询分页展示
    4. Controller将查询到的分页数据响应给页面
    5. 页面接收到分页数据并通过ElementUI的Table组件展示到页面上
  2. 要点说明:

    • 全局请求拦截器,发送get方式ajax请求,json格式的参数会统一进行处理,重新组装。
      最终格式:http://localhost:8080/employee/page?page=1&pageSize=10
      	// request拦截器service.interceptors.request.use(config => {// 是否需要设置 token// const isToken = (config.headers || {}).isToken === false// if (getToken() && !isToken) {//   config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改// }// get请求映射params参数if (config.method === 'get' && config.params) {let url = config.url + '?';for (const propName of Object.keys(config.params)) {const value = config.params[propName];var part = encodeURIComponent(propName) + "=";if (value !== null && typeof(value) !== "undefined") {if (typeof value === 'object') {for (const key of Object.keys(value)) {let params = propName + '[' + key + ']';var subPart = encodeURIComponent(params) + "=";url += subPart + encodeURIComponent(value[key]) + "&";}} else {url += part + encodeURIComponent(value) + "&";}}}url = url.slice(0, -1);config.params = {};config.url = url;}return config}, error => {console.log(error)Promise.reject(error)})  
      
    • 前端响应拦截器
      	// 响应拦截器
      service.interceptors.response.use(res => {if (res.data.code === 0 && res.data.msg === 'NOTLOGIN') {// 返回登录页面console.log('---/backend/page/login/login.html---')localStorage.removeItem('userInfo')window.top.location.href = '/backend/page/login/login.html'} else {return res.data}
      },
      error => {console.log('err' + error)let { message } = error;if (message == "Network Error") {message = "后端接口连接异常";}else if (message.includes("timeout")) {message = "系统接口请求超时";}else if (message.includes("Request failed with status code")) {message = "系统接口" + message.substr(message.length - 3) + "异常";}window.ELEMENT.Message({message: message,type: 'error',duration: 5 * 1000})return Promise.reject(error)
      }
      )
      
    • 前后端对接的数据需要统一
  3. 后端代码开发

    1. 配置Mybatis-plus的分页插件
      /*** 配置MP的分页插件*/
      @Configuration //配置类注解
      public class MybatisPlusConfig {//通过拦截器的方式将插件加载到项目@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor(){//创建拦截器对象MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();//通过对象加载拦截器mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());return mybatisPlusInterceptor;}
      }
      
    2. 创建controller类接收前端页面发送请求的参数
      /*** 员工信息的分页查询* @param page* @param pageSize* @param name* @return*/
      @GetMapping("/page")
      public R<Page> page(int page,int pageSize,String name) {log.info("page={},pageSize={},name={}", page, pageSize, name);//1.构造分页构造器Page pageInfo = new Page<>(page, pageSize);//2.构造条件构造器LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper();// 2.1添加一个过滤条件queryWrapper.like(StringUtils.isNotEmpty(name), Employee::getName, name);// 2.2添加一个排序条件queryWrapper.orderByDesc(Employee::getUpdateTime);//3.执行查询employeeService.page(pageInfo, queryWrapper);return R.success(pageInfo);
      }
      

测试

使用断点调试,跟踪代码逻辑,验证是否符合预期

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

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

相关文章

项目七 熟练使用Vim程序编辑器与shell

项目七 熟练使用Vim程序编辑器与shell #职业能力目标和要求 1&#xff0c;学会使用vim编辑器。 2&#xff0c;了解shell的强大功能和shell的命令解释过程。 3&#xff0c;学会使用重定向和管道的方法。 4&#xff0c;掌握正则表达式的使用方法。7.1 熟悉使用vim编辑器 7.1.1 …

使用opencv将sRGB格式的图片转换为Adobe-RGB格式【sRGB】【Adobe-RGB】

在C中使用OpenCV将图像从sRGB格式转换为Adobe RGB格式&#xff0c;需要应用特定的线性转换矩阵。sRGB和Adobe RGB使用不同的色彩空间&#xff0c;这意味着它们在色彩表达上有所不同。通常&#xff0c;这样的转换涉及到对RGB颜色值的线性变换。 但是&#xff0c;需要注意的是&a…

羽隔已就之图像处理之BP神经网络入门

小y最近非常忙&#xff0c;这一年来&#xff0c;活很多&#xff0c;一直在加班、出差&#xff0c;也没好好休息过。最近在武汉出差一个多月了&#xff0c;项目逐渐完结&#xff0c;有点闲时间了&#xff0c;回首望&#xff0c;这一年设定的很多目标都没完成。 还记得&#xff0…

深入Rust的模式匹配与枚举类型

今天&#xff0c;我们将深入探讨Rust语言中的两个强大特性&#xff1a;模式匹配&#xff08;Pattern Matching&#xff09;和枚举类型&#xff08;Enums&#xff09;。这两个特性是Rust提供的核心工具之一&#xff0c;它们在处理多种类型的数据和复杂的逻辑控制中发挥着关键作用…

七、Lua字符串

文章目录 一、字符串&#xff08;一&#xff09;单引号间的一串字符&#xff08;二&#xff09;local str "Hello, "&#xff08;三&#xff09;[[ 与 ]] 间的一串字符&#xff08;四&#xff09;例子 二、字符串长度计算&#xff08;一&#xff09;string.len&…

技巧-PyTorch中num_works的作用和实验测试

简介 在 PyTorch 中&#xff0c;num_workers 是 DataLoader 中的一个参数&#xff0c;用于控制数据加载的并发线程数。它允许您在数据加载过程中使用多个线程&#xff0c;以提高数据加载的效率。 具体来说&#xff0c;num_workers 参数指定了 DataLoader 在加载数据时将创建的…

深度学习之图像分类(十五)DINAT: Dilated Neighborhood Attention Transformer理论精简摘要(二)

Dilated Neighborhood Attention Transformer摘要 局部注意力机制&#xff1a;例如滑动窗口Neighborhood Attention&#xff08;NA&#xff09;或Swin Transformer的Shifted Window Self Attention。 优点&#xff1a;尽管在降低自注意力二次复杂性方面表现出色&#xff0c; …

c 数组简介

我们都知道我们可以使用一个变量来存储单个值,但如果我们必须一次存储 100 个值,那么声明和初始化 100 个变量并不是一种优化的处理方式。为此,我们在 C 中使用数组来存储类似数据类型的数据。C中的数组分为一维数组、二维数组和多维数组。数组索引始终从 0 开始,以 size-1…

微服务知识大杂烩

1.什么是微服务? 微服务(Microservices)是一种软件架构风格,将一个大型应用程序划分为一组小型、自治且松耦合的服务。每个微服务负责执行特定的业务功能,并通过轻量级通信机制(如HTTP)相互协作。每个微服务可以独立开发、部署和扩展,使得应用程序更加灵活、可伸缩和可…

C++多线程学习(文章链接汇总)

参考引用 C11 14 17 20 多线程从原理到线程池实战代码运行环境&#xff1a;Visual Studio 2019 C多线程学习&#xff08;一&#xff09;&#xff1a;C11 多线程快速入门 C多线程学习&#xff08;二&#xff09;&#xff1a;多线程通信和锁 C多线程学习&#xff08;三&#xff0…

docker 安装elasticsearch集群

准备工作 docker 安装好&#xff0c;docker compose 安装好编辑好docker-compose.yml文件&#xff08;本文会提供&#xff09;生成elastic-certificates.p12密钥&#xff0c;与docker-compose文件在同一个目录&#xff08;本文会介绍生成方式&#xff09;准备elasticsearch配置…

Selenium 学习(0.17)——软件测试之测试用例设计方法——白盒测试——逻辑覆盖法(条件覆盖和条件判定覆盖)

条件覆盖 设计测试用例&#xff0c;使每个判断中每个条件的可能取值至少满足一次。 条件判定覆盖 通过设计足够的测试用例&#xff0c;满足如下条件&#xff1a; 所有条件的可能至少执行一次的取值 所有判断的可能结果至少执行一次 条件判定覆盖同时满足判定覆…

centos7.9 + gitlab12.3.0安装

本文在centos7.9操作系统上安装gitlab 12.3.0&#xff0c;gitlab官方最新的版本已经是16.6.0了&#xff0c;这里仍然安装12.3.0版本的原因是汉化包的最新版本是12.3.0&#xff0c;如果汉化包的版本和gitlab的版本不对应&#xff0c;会出现汉化他无法启动的现象。 1、安装依赖 …

基于Hadoop的异构网络协同过滤推荐算法设计

基于Hadoop的异构网络协同过滤推荐算法设计 基于Hadoop的异构网络协同过滤推荐算法设计 Design of Heterogeneous Network Collaborative Filtering Recommendation Algorithm based on Hadoop 目录 目录 2 摘要 3 关键词 4 第一章 引言 4 1.1 研究背景 4 1.2 研究意义 5 1.3 国…

Python 图形用户界面详解(GUI,Tkinter)

文章目录 1 概述1.1 TK&#xff1a;窗口1.2 官方文档 2 组件2.1 Label&#xff1a;标签2.2 Button&#xff1a;按钮2.3 Entry&#xff1a;输入2.4 Text&#xff1a;文本2.5 Radiobutton&#xff1a;单选框2.6 Checkbutton&#xff1a;复选框2.7 Canvas&#xff1a;画布2.10 Men…

深拷贝 浅拷贝 递归

浅拷贝指的是创建一个新对象&#xff0c;其中包含原始对象的引用&#xff08;指针&#xff09;&#xff0c;并没有真正将原始对象的数据复制到新对象中&#xff0c;因此新对象与原始对象共享部分或全部数据。 深拷贝指的是创建一个新对象&#xff0c;并递归地将原始对象的数据…

Shell条件变量练习

1.算数运算命令有哪几种&#xff1f; (1) "(( ))"用于整数运算的常用运算符&#xff0c;效率很高 [rootshell scripts]# echo $((24*5**2/8)) #(( ))2452814 14 (2) "$[ ] "用于整数运算 [rootshell scripts]# echo $[24*5**2/8] #[ ]也可以运…

目标检测YOLO系列从入门到精通技术详解100篇-【目标检测】特征点检测与匹配

目录 前言 算法原理 一、图像特征介绍 二、特征检测子 三、特征描述子

Python缺失值处理实现

在数据处理相关工作中&#xff0c;读取的数据中常常会有缺失值的情况&#xff0c;为顺利进行后续的操作&#xff0c;需要首先对缺失值进行处理&#xff0c;处理的方式一般为删除或填充&#xff0c;Python中提供了专门的工具包&#xff0c;可以方便地进行实现。读取操作可以由pa…

WebGL技术框架及功能

WebGL&#xff08;Web Graphics Library&#xff09;是一种用于在Web浏览器中渲染交互式3D和2D图形的JavaScript API。它允许在不需要插件的情况下&#xff0c;在支持WebGL的浏览器中直接运行高性能的图形渲染。WebGL没有一个固定的技术框架&#xff0c;而是基于JavaScript API…