Spring Boot + Mybatis + vue2 — 实现分页查询

后端

pom.xml文件导入依赖

<!--分页查询-->
<dependency>
   <groupId>com.github.pagehelper</groupId>
   <artifactId>pagehelper-spring-boot-starter</artifactId>
   <version>1.4.6</version>
</dependency>

配置全局配置文件application.properties

# 分页
pagehelper.helper-dialect=mysql
pagehelper.reasonable=true
pagehelper.support-methods-arguments=true
pagehelper.params=count=countSql

Student.java 学生实体类,里面的属性对应student表中的字段

@Data作用:实现Getter和Setter方法

@AllArgsConstructor作用:实现全参构造方法

@NoArgsConstructor作用:实现空参构造方法

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student{
    /** 所属学院 */
    private String school;
    /** 所属专业 */
    private String major;
    /** 所属班级 */
    private String className;
    /** 学生姓名 */
    private String studentName;
}

@Data注解的使用需要导入Lombok依赖

<!--lombok-->
<dependency>
   <groupId>org.projectlombok</groupId>
   <artifactId>lombok</artifactId>
   <optional>true</optional>
 </dependency>

Params.java 模糊搜索包含的参数,该实体无对应的表字段

@Data
public class ScoreParams {
    /** 所属学院 */
    private String school;
    /** 所属专业 */
    private String major;
    /** 所属班级 */
    private String className;
    /** 学生学号 */
    private String studentNumber;
    /** 学生姓名 */
    private String studentName;
    /** 分页大小 */
    private Integer pageSize;
    /** 分页数 */
    private Integer pageNum;
}

StudentMapper.java

注:@Param("params") Params params命名一定要对应前端传来的参数 params: this.Params 保持一致

 List<Student> findBySearchValue(@Param("params") Params params);

StudentMapper.xml

<select id="findBySearchValue" resultType="com.domain.Student">
  SELECT * FROM student
  <where>
     <if test="params != null and params.school != null and params.school != '' ">
         AND school like concat('%', #{params.school}, '%')
     </if>
     <if test="params != null and params.major != null and params.major != '' ">
         AND major like concat('%', #{params.major}, '%')
     </if>
     <if test="params != null and params.className != null and params.className != '' ">
         AND class_name like concat('%', #{params.className}, '%')
     </if>
         AND student_number like concat('%', #{params.studentNumber}, '%')
     </if>
     <if test="params != null and params.studentName != null and params.studentName != '' ">
         AND student_name like concat('%', #{params.studentName}, '%')
     </if>
   </where>
</select>

StudentService.java

 PageInfo<Student> findBySearchValue(Params params);

StudentServiceImpl.java

 @Override
 public PageInfo<Student> findBySearchValue(Params params) {
        /** 分页查询 */
        PageHelper.startPage(params.getPageNum(),params.getPageSize());
        List<Score> bySearchValue = studentMapper.findBySearchValue(params);
        return PageInfo.of(bySearchValue);
  }

StudentController.java

@GetMapping("/search")
    public AjaxResult findBySearchValue(Params params){
        PageInfo<Student> findBySearchValue = studentService.findBySearchValue(params);
        return AjaxResult.success(findBySearchValue);
    }

前端

我使用的是ElementUI,进入官网:https://element.eleme.cn/2.0/#/zh-CN/component/pagination,任意选择一个分页的样式

SelectStudent.vue

<template>
  <div>
   <div>
      <el-table :data="Table" height="380" border style="width: 100%;">
        <el-table-column prop="school" label="学院" align="center" width="140"> </el-table-column>
        <el-table-column prop="major" label="专业" align="center" width="120"> </el-table-column>
        <el-table-column prop="className" label="班级" align="center" width="120"> </el-table-column>
        <el-table-column prop="studentName" label="姓名" align="center" width="100"> </el-table-column>
        <el-table-column label="操作" width="250" align="center">
          <el-button type="success" icon="el-icon-view" />
          <el-button type="primary" icon="el-icon-edit" />
          <el-button type="danger" icon="el-icon-delete" />
        </el-table-column>
      </el-table>
    </div>
   <!-- 分页查询 -->
   <div class="block" style="margin-left: 600px;margin-top: 20px;">
      <el-pagination
        @size-change="handleSizeChange"
        @current-change="handleCurrentChange"
        :current-page="Params.pageNum"
        :page-size="Params.pageSize"
        :page-sizes="[10, 20, 30, 40]"
        layout="total, sizes, prev, pager, next"
        :total="total">
      </el-pagination>
   </div>
 </div>
</template>

SelectStudent.vue

export default {
  name: "ScoreSelct",
  data() {
    return {
      total: 0,
      // 搜索框参数
      Params:{
        school: '',
        major: '',
        className: '',
        studentName: '',
        pageNum: 1,
        pageSize: 10,
      },
      // 查询表格
      scoreTable: [],
    }
  },
  // 页面加载时调用
  created(){
    this.findBySearchValue()
  },
  methods:{
    // 模糊搜索
    findBySearchValue(){
      request.get('/search',{params: this.Params}).then(res => {
        if(res.code === '200'){
          this.Table = res.data.list
          this.total = res.data.total
          this.$message.success('查询成功')
        }else{
          this.$message.error('查询失败')
        }
      })
    },
    // 清空输入框内容
    reset(){
      this.Params={
        school: '',
        major: '',
        className: '',
        studentName: '',
      },
      this.findBySearchValue()
    },
    // 点击查询时,触发10条/页
    handleSizeChange(pageSize){
      this.searchParams.pageSize = pageSize;
      this.findBySearchValue();
    },
    // 点击1,2,3页数切换
    handleCurrentChange(pageNum){
      this.searchParams.pageNum = pageNum;
      this.findBySearchValue();
    },
  }
}
</script>

res.data.list:具体需要看数据所在的位置,这里的数据是位于data下的list数组内

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python接口自动化之requests请求统一封装

还记得我们之前写的get请求、post请求么&#xff1f; 大家应该有体会&#xff0c;每个请求类型都写成单独的函数&#xff0c;代码复用性不强。 接下来将请求类型都封装起来 自动化用例都可以用这个封装的请求类进行请求&#xff0c;我们将常用的get、post请求封装起来。 imp…

亚信安慧AntDB数据库——通信运营商核心系统的全面演进

AntDB数据库源自通信运营商核心系统&#xff0c;经过15年的平稳运行和不断演进&#xff0c;成功跟随通信技术的升级步伐&#xff0c;逐步迈向5G时代&#xff0c;并且在这期间完成了8次大版本的迭代&#xff0c;为行业树立了技术领先的典范。其独特之处在于具备超融合架构&#…

Laravel的知识点

1.{{ }} 是在 HTML 中内嵌 PHP 的 Blade 语法标识符&#xff0c;表示包含在该区块内的代码都将使用 PHP 来编译运行。 2.两种写法 3.return void 在这段注释中&#xff0c;"return void" 表示该函数或方法没有返回值。这意味着它执行某些操作或任务&#xff0c;但…

数据结构学习 Leetcode494 目标和

关键词&#xff1a;动态规划 01背包 dfs回溯 一个套路&#xff1a; 01背包&#xff1a;空间优化之后dp【target1】&#xff0c;遍历的时候要逆序遍历完全背包&#xff1a;空间优化之后dp【target1】&#xff0c;遍历的时候要正序遍历 题目&#xff1a; 解法一&#xff1a; …

专为初学者设计:Nutch库Java下载器入门指南

概述: Nutch是一款开源的Java爬虫框架&#xff0c;用于抓取、解析、提取和存储网页数据。基于Hadoop的分布式系统&#xff0c;Nutch支持大规模网络爬取&#xff0c;并提供各种插件&#xff0c;包括链接分析、语言检测和内容过滤等功能。 本文旨在介绍如何使用Nutch库编写简单…

Python自动化测试:选择最佳的自动化测试框架

在开始学习python自动化测试之前&#xff0c;先了解目前市场上的自动化测试框架有哪些&#xff1f; 随着技术的不断迭代更新&#xff0c;优胜劣汰也同样发展下来。从一开始工具型自动化&#xff0c;到现在的框架型&#xff1b;从一开始的能用&#xff0c;到现在的不仅能用&…

SD-WAN企业组网的核心要点

随着企业网络需求的不断演进和全球化业务的扩张&#xff0c;SD-WAN&#xff08;软件定义广域网&#xff09;作为一种先进的网络架构技术&#xff0c;逐渐成为企业组网的首选方案。SD-WAN通过提供更灵活、高效和安全的网络连接&#xff0c;帮助企业轻松应对不同地区和业务需求。…

C++ 之LeetCode刷题记录(三)

&#x1f604;&#x1f60a;&#x1f606;&#x1f603;&#x1f604;&#x1f60a;&#x1f606;&#x1f603; 开始cpp刷题之旅&#xff0c;多学多练&#xff0c;尽力而为。 先易后难&#xff0c;先刷简单的。 13、罗马数字转整数 罗马数字包含以下七种字符: I&#xff0c…

跨境电商引流真的很难吗?了解一下这些技巧!

随着全球电商市场的不断扩大&#xff0c;越来越多的企业开始涉足跨境电商领域&#xff0c;然而&#xff0c;与国内电商相比&#xff0c;跨境电商面临着诸多挑战&#xff0c;其中最大的难题之一就是如何有效地吸引潜在客户。 很多卖家觉得跨境电商引流非常困难&#xff0c;但实…

[Angular] 笔记 12:模板驱动表单 - ngForm

Angular For Beginners - 16. Template Driven Forms (ngForm) Angular 以其表单模块而闻名。 Angular 有两种类型的表单&#xff1a; Template 以及 Reactive&#xff1a; Template 表单的特点&#xff1a;简单&#xff0c;神奇&#xff0c;一键点击。 Reactive 表单的特点&…

RabbitMQ 报错:Failed to declare queue(s):[QD, QA, QB]

实在没想到会犯这种低级错误。 回顾整理一下吧&#xff1a; 原因&#xff1a;SpringBoot主配置类默认只会扫描自己所在的包及其子包下面的组件。其他位置的配置不会被扫描。 如果非要使用其他位置&#xff0c;就需要在启动类上面指定新的扫描位置。注意新的扫描位置会覆盖默…

C# 学习网站

C# 文档 - 入门、教程、参考。 | Microsoft Learnhttps://learn.microsoft.com/zh-cn/dotnet/csharp/ Browse code samples | Microsoft LearnGet started with Microsoft developer tools and technologies. Explore our samples and discover the things you can build.http…

uniapp开发移动端遇到的问题记录

1. 键盘弹起时页面整体上移问题 很常见但我解决过程中遇到了很多问题 我的键盘没有遮盖到输入框&#xff0c;但手机键盘弹起后&#xff0c;form部分会整体上移一点&#xff0c;并且底部的操作也会弹到键盘上方 网上写得很复杂&#xff0c;什么动态赋值高度balabala。看到有一…

性能测试-jmeter:安装 / 基础使用

一、理解jmeter 官网-Apache JMeter-Apache JMeter™ JMeter是一款开源的性能测试工具&#xff0c;主要用于模拟大量用户并发访问目标服务器&#xff0c;以评估服务器的性能和稳定性。 JMeter可以执行以下任务序号用途描述1性能测试通过模拟多个用户在同一时间对服务器进行请…

16-网络安全框架及模型-BiBa完整性模型

目录 BiBa完整性模型 1 背景概述 2 模型原理 3 主要特性 4 优势和局限性 5 应用场景 BiBa完整性模型 1 背景概述 Biba完整性模型是用于保护数据完整性的模型&#xff0c;它的主要目标是确保数据的准确性和一致性&#xff0c;防止未授权的修改和破坏。在这个模型中&#…

echarts 柱状图

记录echarts 柱状图基础案例以及相关配置。 1.基础柱状图 const myChart this.$echarts.init(this.$refs.echartsZx);const option {title: {text: 本周考试记录},//提示框tooltip: {trigger: axis,axisPointer: {type: shadow}},xAxis: {type: category,data: [Mon, Tue, W…

Apache Commons Pool的对象池技术

第1章&#xff1a;引言 咱们今天来聊聊一个在Java开发中超级实用&#xff0c;但又经常被忽视的技术——对象池技术。可能你们已经听说过“对象池”这个名词&#xff0c;但对它的具体作用和重要性还有些模糊。别急&#xff0c;小黑带你们一步步深入了解。 想象一下&#xff0c…

k8s集群etcd备份与恢复

一、前言 k8s集群使用etcd集群存储数据&#xff0c;如果etcd集群崩溃了&#xff0c;k8s集群的数据就会全部丢失&#xff0c;所以需要日常进行etcd集群数据的备份&#xff0c;预防etcd集群崩溃后可以使用数据备份进行恢复&#xff0c;也可用于重建k8s集群进行数据恢复 二、备份…

0基础学习VR全景平台篇第132篇:曝光三要素—快门速度

上课&#xff01;全体起立~ 大家好&#xff0c;欢迎观看蛙色官方系列全景摄影课程&#xff01; 经过前面两节课的学习我们认识了曝光三要素中的感光度和光圈&#xff0c;这节课我们将一同去了解影响曝光的最后一个要素——快门速度。 (曝光三要素&#xff1a;感光度、光圈、…

docker学习(二十、network使用示例host、none)

文章目录 一、host应用示例总结 二、none应用示例总结 network相关内容&#xff1a; docker学习&#xff08;十八、network介绍&#xff09; docker学习&#xff08;十九、network使用示例bridge&#xff09; docker学习&#xff08;二十、network使用示例host、none&#xff0…