基于SpringBoot+Vue+ElementUI+Mybatis前后端分离管理系统超详细教程(四)——前后端数据交互

news2024/11/17 4:58:47

 经过前面几个章节的学习我们掌握了:

        1、如何使用Vue快速搭建前端工程化项目,并结合elementUI优化了界面;

基于SpringBoot+Vue+ElementUI+Mybatis前后端分离管理系统超详细教程(一)

基于SpringBoot+Vue+ElementUI+Mybatis前后端分离管理系统超详细教程(二)

        2、还学会了使用注解、xml配置两种方式对后端进行数据库CRUD操作;

基于SpringBoot+Vue+ElementUI+Mybatis前后端分离管理系统超详细教程(三)

在第四章节我们学习前后端跨域连接,这样就架起了前后端交互的桥梁。

目录

学习目标

        通过本节实操我们可以获得以下几方面能力 :

1、掌握分页查询SQL原理以及SQL统计语句(统计总记录数);        

2、了解前后端跨域的概念;      

 3、后端添加跨域配置,实现前后端跨域;        

4、掌握前端pageNum和pageSize以及分页方法。

5、掌握条件搜索分页查询

一、后端分层添加分页查询方法 

1、mapper层

2、service层

3、controller层

二、postman测试

三、跨域配置和前端取值

 1、后端配置跨域

2、前端修改

2.1、分页功能里下面几处和图中进行相同的修改

2.2、完整代码如下,对比进行修改

 3、前端运行项目

四、条件搜索并分页展示数据 

1、mapper层

 2、service层

​编辑 4、前端修改

5、运行项目


 

学习目标

        通过本节实操我们可以获得以下几方面能力 :

        1、掌握分页查询SQL原理以及SQL统计语句(统计总记录数);
        2、了解前后端跨域的概念;
        3、后端添加跨域配置,实现前后端跨域;
        4、掌握前端pageNum和pageSize以及分页方法。

        5、掌握条件搜索分页查询

一、后端分层添加分页查询方法 

1、mapper层

在UserMapper类我们用注解方式添加分页查询接口及SQL,代码如下:

 @Select("select * from sys_user limit #{pageNum},#{pageSize}")
    List<User> selectPage(@Param("pageNum") Integer pageNum,@Param("pageSize") Integer pageSize);

2、service层

 在UserService类,添加selectPage方法,代码如下:

public List selectPage(Integer pageNum, Integer pageSize) {
return userMapper.selectPage(pageNum,pageSize);
}

3、controller层

在UserController类中添加findPage方法,代码如下:

//分页查询
@GetMapping("/page")
public List<User> findPage(@RequestParam Integer pageNum,@RequestParam Integer pageSize){
   pageNum=(pageNum-1)*pageSize;
    return userService.selectPage(pageNum,pageSize);
    }

二、postman测试

 1、发起get请求,路由中传入参数,看到如下界面证明我们的后端分页取数据是没有问题的,接下来就可以进行跨域配置和前端代码修改,使得前端能够拿到后端数据并在浏览器上显示给用户。

三、跨域配置和前端取值

跨域配置可以在前端或者后端进行,这节课我们来学习在后端进行跨域配置

 1、后端配置跨域

        在config包下新建CorsConfig类,添加如下代码

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

//跨域配置
@Configuration
public class CorsConfig {
    // 当前跨域请求最大有效时长。这里默认1天
    private static final long MAX_AGE = 24 * 60 * 60;

    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedOrigin("*"); // 1 设置访问源地址
        corsConfiguration.addAllowedHeader("*"); // 2 设置访问源请求头
        corsConfiguration.addAllowedMethod("*"); // 3 设置访问源请求方法
        corsConfiguration.setMaxAge(MAX_AGE);
        source.registerCorsConfiguration("/**", corsConfiguration); // 4 对接口配置跨域设置
        return new CorsFilter(source);
    }
}

2、前端修改

2.1、分页功能里下面几处和图中进行相同的修改

2.2、<script></script>完整代码如下,对比进行修改

<script>
//逗号千万记得加加加加加加加
// @ is an alias to /src(@是/src的别名)
import HelloWorld from '@/components/HelloWorld.vue'

export default {
  name: 'HomeView',
  data(){//这里的变量和上面分页设置中自定义变量名一致
    return {// 之前这里是虚拟数据,用数据函数批量生成表格中数据
      tableData: [],
      pageNum: 1 ,// 这里设置分页框中的默认值
      pageSize: 5,
      total: 0
    }
  },
  //创建完页面后执行的钩子函数
    created(){
      this.load()
 },
  //下面是各种函数,包括自定义函数
  methods: {   
    
    load(){
     fetch("http://localhost:8085/user/page?pageNum="+this.pageNum+"&pageSize="
     +this.pageSize+"").then(res=>res.json()).then(res=>{	  
	  	console.log(res)   
      this.tableData=res.data  //后台返回的所有数据
      this.total=res.total    //后台返回的总条数
      })
    },
    // 添加分页功能函数
      handleSizeChange(valS) {//传递过来当前每页要显示几条
        console.log(`每页 ${valS} 条`);
        this.pageSize=valS   //获取当前每页条数
        this.load()
      },
      handleCurrentChange(valN) {//传递过来当前是第几页
        console.log(`当前页: ${valN}`);
        this.pageNum=valN     //获取当前第几页
        this.load()
      }
    }   
  }
</script>

 3、前端运行项目

看到如下分页效果,证明我们的前后端数据交互成功了。

四、条件搜索并分页展示数据 

前面我们学习了从后端拿到数据并分页展示在浏览器(客户端),在此基础上我们就可以进一步完成上面的条件搜索并分页展示的功能,先来学习按照用户名模糊查询并分页展示。

1、mapper层

修改UserMapper中分页查询和查询总条数方法:

sql语句在之前的基础上增加了查询条件:where username like #{userName}

方法体里形参增加了String UserName参数

具体代码如下

//按条件分页查询接口,注解方式sql
    @Select("select * from sys_user where username like #{userName} limit #{pageNum},#{pageSize}")
    List<User> selectPage(@Param("pageNum") Integer pageNum,@Param("pageSize") Integer pageSize,@Param("userName") String userName);

    //查询数据总条数接口及sql
    @Select("select count(*) from sys_user where username like #{userName}")
    Integer selectTotal(String userName);

 2、service层

方法体里形参增加了String UserName参数

3、controller层

 4、前端修改

前端主要修改四个地方

5、运行项目

我这里模糊查询名字里有“火”的数据,一共得到三条数据。其他两个查询框想要生效同理,如法炮制也能得到结果,我们后面会依次补全这里的功能。

 

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

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

相关文章

软件测试入门

文章目录 一、入门1. 软件2. 软件基本组成3. 软件产生过程4. 软件测试5. 软件测试目的&#x1f3c6; 小结 二、测试主流技能1. 功能测试2. 自动化测试3. 接口测试4. 性能测试&#x1f3c6; 小结 三、测试分类1. 按测试阶段划分2. 按代码可见度划分&#x1f3c6; 小结 三、质量模…

信息系统项目管理师003:信息化(1信息化发展—1.1信息与信息化—1.1.3 信息化)

文章目录 1.1.3 信息化1.信息化内涵2.信息化体系3.信息化趋势 要点总结 1.1.3 信息化 信息化是一个过程&#xff0c;与工业化、现代化一样&#xff0c;是一个动态变化的过程。信息化是指培养、发展以计算机为主的智能化工具为代表的新生产力&#xff0c;并使之造福于社会的历史…

通过sqoop把hive数据到mysql,脚本提示成功,mysql对应的表中没有数

1、脚本执行日志显示脚本执行成功&#xff0c;读写数量不为0 2、手动往Mysql对应表中写入数据十几秒后被自动删除了 问题原因&#xff1a; 建表时引擎用错了&#xff0c;如下图所示 正常情况下应该用InnoDB

7-4 哲哲打游戏(Python)

哲哲是一位硬核游戏玩家。最近一款名叫《达诺达诺》的新游戏刚刚上市&#xff0c;哲哲自然要快速攻略游戏&#xff0c;守护硬核游戏玩家的一切&#xff01; 为简化模型&#xff0c;我们不妨假设游戏有 N 个剧情点&#xff0c;通过游戏里不同的操作或选择可以从某个剧情点去往另…

偶极子和环形天线的辐射机理仿真分析

目录 0 引言 1 偶极子天线的辐射因素分析 1.1 偶极子天线模型设计 1.2 谐振点的出现规律 1.3 天线尺寸对辐射的影响 1.4 天线角度对辐射的影响

浅显易懂:WinForms、WPF和Electron的区别和优缺点

在开发桌面应用的时候&#xff0c;WinForms、WPF和Electron是绕不过去的三个技术栈&#xff0c;本文就详细据介绍了三者的区别和优缺点&#xff0c;帮助老铁们做个抉择。 一、winform wpf Electron 三者区别 WinForms、WPF和Electron是三种不同的框架和技术&#xff0c;用于开…

计算机中丢失缺少mfc100.dll文件该如何解决?

当你打开某个应用程序时&#xff0c;有时候会遇到一个“mfc100.dll丢失”或找不到mfc100.dll的错误信息提示。这种情况表明你的计算机缺少一个名为mfc100.dll的动态链接库文件。这个文件是由Microsoft VC 2010 Redistributable Package提供的&#xff0c;它是一组可重用的组件&…

【校园导航小程序】2.0版本 静态/云开发项目 升级日志

演示视频 【校园导航小程序】2.0版本 静态/云开发项目 演示 首页 重做了首页&#xff0c;界面更加高效和美观 校园指南页 新增了 “校园指南” 功能&#xff0c;可以搜索和浏览校园生活指南 地图页 ①弃用路线规划插件&#xff0c;改用SDK开发包。可以无阻通过审核并发布…

Linux的top命令解析

Top命令是什么 TOP命令是Linux下常用的性能分析工具&#xff0c;能够实时显示系统中各个进程的资源占用状况。 TOP是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系…

qml中toolbox控件、ComboBox控件、PlainText实现及美化

一. 内容简介 qml中toolbox控件、ComboBox控件、PlainText实现及美化 二. 软件环境 2.1vsCode 2.2Anaconda version: conda 22.9.0 2.3pytorch 安装pytorch(http://t.csdnimg.cn/GVP23) 2.4QT 5.14.1 新版QT6.4,&#xff0c;6.5在线安装经常失败&#xff0c;而5.9版本…

相对于 Linux,Windows Server 存在的意义是什么?

相对于 Linux&#xff0c;Windows Server 存在的意义是什么&#xff1f; 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「Linux 的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给…

写作文的ai的软件有吗?分享4款热门的软件!

随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;已经渗透到我们生活的方方面面&#xff0c;包括写作领域。许多AI工具如今能够帮助我们快速、高效地创作文章&#xff0c;无论是新闻稿、广告文案还是博客文章&#xff0c;它们都能提供有力的支持。今天&#…

linux安装todesk

xunilToDesk远程桌面软件-免费安全流畅的远程连接电脑手机ToDesk远程控制软件是一款稳定流畅的远程控制电脑手机连接软件,可远程桌面办公,远程协助运维.采用端对端加密,让每一次远程访问都安全可靠。https://www.todesk.com/linux.htmlToDesk远程控制软件是一款稳定流畅的远程控…

20.网络游戏逆向分析与漏洞攻防-网络通信数据包分析工具-数据分析工具数据类型编辑功能的实现

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易道云信息技术研究院VIP课 上一个内容&#xff1a;19.数据分析工具数据类型配置功能的实现 码云地址&#xff08;master 分支&#…

Androidstudio实现登录按钮按下变色

在activity_main.xml中&#xff0c;写如下代码&#xff1a; <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"androi…

华为---MSTP(一)---MSTP生成树协议

目录 1. MSTP技术产生背景 2. STP/RSTP的缺陷 ​编辑 2.1 无法均衡流量负载 2.2 数据使用次优路径 3. MSTP生成树协议 3.1 MSTP相关概念 3.2 MSTP树生成的形成过程 4. MSTP报文 1. MSTP技术产生背景 RSTP在STP基础上进行了改进&#xff0c;实现了网络拓扑快速收敛。但…

[Buuctf] [MRCTF2020]Transform

1.查壳 64位exe文件&#xff0c;没有壳 2.用64位IDA打开 找到主函数&#xff0c;F5查看伪代码 从后往前看&#xff0c;有一个判断语句&#xff0c;是两个数组进行比较的&#xff0c;我们双击byte_40F0E0查看里面的内容 所以能够推出byte_414040的内容&#xff0c;byte_4140…

【常见集合】Java 常见集合重点解析

Java 常见集合重点解析 1. 什么是算法时间复杂度&#xff1f; 时间复杂度表示了算法的 执行时间 和 数据规模 之间的增长关系&#xff1b; 什么是算法的空间复杂度&#xff1f; 表示了算法占用的额外 存储空间 与 数据规模 之间的增长关系&#xff1b; 常见的复杂度&#x…

守护Web安全:了解Web攻击与防护策略

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

搜索引擎都没流量啦,官网建设还有啥意义?

百度等搜索引擎都没啥流量了&#xff0c;再建设官网还有啥用&#xff1f;如果你把官网定位于获客&#xff0c;那真的没啥太大用处&#xff0c;但是官网不仅仅是用来获客的。 一、搜索引擎的流量被稀释了 搜索引擎流量减少的原因有多个&#xff0c; 1. 社交媒体的崛起&#xf…