对于多个表多个字段进行查询、F12查看网页的返回数据帮助开发、数据库的各种查询方式(多对多、多表查询、子查询等)。

对于多个表多个字段进行查询、F12查看网页的返回数据帮助开发、数据库的各种查询方式(多对多、多表查询、子查询等)。

  • 一、 前端界面需要展现多个表的其中几个数据的多表查询。
    • 1. 三个表查询其中字段返回:(用一下sql语句)
    • 2. 进行封装实体类,返回前端
    • 3. 如果前端需要在一个表单里面插入或者修改多个表,我们可以这样做:
  • 二、按F12然后查看cook中的接口
    • 1 查看请求方式
    • 2 查看封装的属性、状态值等信息
  • 三、数据库各种查询(黑马):示例和代码
    • 1 多对多
    • 2 一对一
    • 3 如果我们直接查询两张表会出现迪卡效应(把两张表进行乘机配对)
    • 4 通过两个id来查询两个表
    • 5 多表查询的概述:
    • 6 内连接(查询公共字段)
    • 7 外连接(左、右连接):(查询左、右边的数据库和公共的部分)
    • 8 自连接(把一个表,通过别名弄成两个表,来查询自己表的数据)
    • 9 自连接+左连接
    • 10 联合查询 union all全部合并,union 去重后合并
    • 11 子查询(嵌套查询)
    • 12 标量子查询(先查询出一个,然后其他表通过这一个作为条件继续查)
    • 13 列子查询(先查出一列的数据,然后被用作条件查询)
    • 14 行子查询(查出一行,作为其他查询的条件)
    • 15 表子查询(查出一个表,作为其他查询的条件)

一、 前端界面需要展现多个表的其中几个数据的多表查询。

1. 三个表查询其中字段返回:(用一下sql语句)

假设有三张表:table1,table2 和 table3,它们的结构如下:
table1 包含字段:id, name, description, created_at, updated_at
table2 包含字段:id, table1_id, field1, field2, field3
table3 包含字段:id, table2_id, value1, value2, value3
现在我们需要从这三张表中查询:
table1 的 name 和 description 字段
table2 的 field1 和 field2 字段
table3 的 value1 和 value2 字段

SELECT t1.name, t1.description, t2.field1, t2.field2, t3.value1, t3.value2
FROM table1 t1
JOIN table2 t2 ON t1.id = t2.table1_id
JOIN table3 t3 ON t2.id = t3.table2_id;

在这里插入图片描述

2. 进行封装实体类,返回前端

老师带我观察页面前端我发现,他们返回的都是一个List列表,然后把需要返回的封装为一个实体类,再返回前端。强烈建议,一定要通义属性的命名,不然当你写这个实体类的时候,超级痛苦!!!

3. 如果前端需要在一个表单里面插入或者修改多个表,我们可以这样做:

如果前端需要将学生和老师的信息一起打包传到后端,你可以扩展现有的Spring Boot 应用程序,使其能够接收包含学生和老师信息的表单数据。以下是如何修改现有的示例代码以支持这种功能:

前端数据结构:前端需要将学生和老师的信息打包成一个结构,并以JSON格式发送到后端。例如:

{"student": {"id": "123","name": "Alice","age": 20,"sex": "Female"},"teacher": {"name": "Mr. Smith","position": "Math Teacher","teachingExperience": 10}
}

后端处理:修改后端的控制器,以接收包含学生和老师信息的请求体,并分别处理学生和老师信息的新增或更新操作。

// Endpoint to add or update student and teacher information together
@PostMapping("/addStudentTeacher")
public String addOrUpdateStudentAndTeacher(@RequestBody StudentTeacherForm form) {// Update or add studentStudent student = form.getStudent();boolean studentExists = students.stream().anyMatch(s -> s.getId().equals(student.getId()));if (studentExists) {students.stream().filter(s -> s.getId().equals(student.getId())).forEach(s -> {s.setName(student.getName());s.setAge(student.getAge());s.setSex(student.getSex());});} else {students.add(student);}// Update or add teacherTeacher teacher = form.getTeacher();boolean teacherExists = teachers.stream().anyMatch(t -> t.getName().equals(teacher.getName()));if (teacherExists) {teachers.stream().filter(t -> t.getName().equals(teacher.getName())).forEach(t -> {t.setPosition(teacher.getPosition());t.setTeachingExperience(teacher.getTeachingExperience());});} else {teachers.add(teacher);}return "Student and Teacher information updated or added successfully.";
}// Form class to wrap student and teacher information
static class StudentTeacherForm {private Student student;private Teacher teacher;// Getters and setterspublic Student getStudent() {return student;}public void setStudent(Student student) {this.student = student;}public Teacher getTeacher() {return teacher;}public void setTeacher(Teacher teacher) {this.teacher = teacher;}
}

表单处理:在前端,确保表单可以将学生和老师的信息合并成一个JSON对象,并通过POST请求发送到/api/addStudentTeacher端点。

通过这种方式,你可以实现将学生和老师的信息一起更新或新增到后端数据库。记得根据实际情况添加数据验证、异常处理和安全性措施,以确保应用程序的稳定性和安全性。
StudentTeacherForm 类是为了方便处理前端发送的包含学生和老师信息的请求而设计的,它通过两个属性 student 和 teacher 分别表示学生和老师的信息。

二、按F12然后查看cook中的接口

1 查看请求方式

在这里插入图片描述

2 查看封装的属性、状态值等信息

在这里插入图片描述

在这里插入图片描述

三、数据库各种查询(黑马):示例和代码

1 多对多

在这里插入图片描述

2 一对一

在这里插入图片描述

3 如果我们直接查询两张表会出现迪卡效应(把两张表进行乘机配对)

在这里插入图片描述

4 通过两个id来查询两个表

在这里插入图片描述

5 多表查询的概述:

在这里插入图片描述

6 内连接(查询公共字段)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7 外连接(左、右连接):(查询左、右边的数据库和公共的部分)

在这里插入图片描述
在这里插入图片描述

8 自连接(把一个表,通过别名弄成两个表,来查询自己表的数据)

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

9 自连接+左连接

在这里插入图片描述

10 联合查询 union all全部合并,union 去重后合并

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

11 子查询(嵌套查询)

在这里插入图片描述

12 标量子查询(先查询出一个,然后其他表通过这一个作为条件继续查)

在这里插入图片描述
在这里插入图片描述

13 列子查询(先查出一列的数据,然后被用作条件查询)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

14 行子查询(查出一行,作为其他查询的条件)

在这里插入图片描述

15 表子查询(查出一个表,作为其他查询的条件)

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

【概率统计】从统计角度理解AUC:一步步揭开神秘面纱

从统计角度理解AUC:一步步揭开神秘面纱 在机器学习和数据分析领域,AUC(Area Under the Curve)是一个常用的评估指标,但对很多人来说,它的统计意义和计算过程有些晦涩。本文将用通俗易懂的语言,…

Redis的入门导读(一)

目录 单机架构 分布式系统 个人总结 一.Redis的介绍 二.Redis特性 三.Redis的快原因 四.Redis的应用场景 五.Redis的总结 由于Redis和分布式系统息息相关,因此我们需要先了解一下,分布式系统! 接下来就是分布式系统的演化过程。 单…

PG在还没有pg_class的时候怎么访问基础系统表?

在没有pg_class的时候,数据库怎么访问系统表?这个问题可以分成两个阶段来看: 数据库簇初始化,此时一个database都没有,所以怎么构造和访问pg_class等系统表是一个问题私有内存初始化系统表。PG的系统表信息是放在back…

JavaScript(7)——数组

JavaScript中数组的用法与Java差不多&#xff0c;但还是有一些区别 声明数组 语法: let 数组名 [数据1,数据2,数据...] let arr new Array(数据1,数据2,...数据n) 添加数据 数组.push()方法将一个或多个元素添加到数组末尾&#xff0c;并返回该数组新长度 <script>…

机器学习(五) -- 监督学习(7) --SVM1

系列文章目录及链接 上篇&#xff1a;机器学习&#xff08;五&#xff09; -- 监督学习&#xff08;6&#xff09; --逻辑回归 下篇&#xff1a; 前言 tips&#xff1a;标题前有“***”的内容为补充内容&#xff0c;是给好奇心重的宝宝看的&#xff0c;可自行跳过。文章内容被…

如何写好品牌宣传稿提升品牌曝光?看这篇文章就够了

在这个信息爆炸的时代&#xff0c;一句精炼而富有力量的宣传语&#xff0c;足以让品牌在万千竞争者中脱颖而出。撰写一篇成功的品牌宣传稿&#xff0c;不仅是对文字艺术的驾驭&#xff0c;也是对品牌灵魂的深刻洞察与精准传达&#xff0c;更是连接品牌与消费者情感与认知的桥梁…

2024前端面试真题【Vue篇】

Vue 的虚拟DOM 虚拟DOM 虚拟DOM是真实DOM的JavaScript表示。它是一个轻量级的JavaScript对象&#xff0c;可以表示DOM的结构和属性&#xff0c;虚拟DOM与真实DOM一一对应。 在Vue中&#xff0c;每个Vue组件都会维护一个对应的虚拟DOM树。当组件的数据发生变化时&#xff0c;…

蚁剑编码器编写——php木马免杀

蚁剑编码器编写——php木马免杀 我的想法是 木马要先免杀&#xff0c;能够落地&#xff0c;再去考虑流量层面的问题 举几个例子演示一下 命令执行与代码执行是有比较大的区别&#xff0c;蚁剑执行的是php代码&#xff0c;而system&#xff0c;proc_open,passthru,exec,shell_…

Adobe Illustrator 2021 for mac/Win:专业矢量图形设计的巅峰之作

Adobe Illustrator 2021作为Adobe公司旗下的旗舰矢量图形设计软件&#xff0c;无论是对于Mac还是Windows用户&#xff0c;都提供了强大而灵活的设计工具&#xff0c;让设计师们能够轻松应对各种复杂的图形设计挑战。这款软件以其卓越的性能、丰富的功能和友好的用户界面&#x…

后悔没早点考?揭晓六西格玛证书背后的惊人好处

在这个竞争激烈的时代&#xff0c;不断提升自我价值和专业能力是每个职场人士都需要面对的问题。而六西格玛证书&#xff0c;作为一个备受瞩目的职业资格认证&#xff0c;其背后的好处和价值已经远超出了人们的想象。深圳天行健企业管理咨询公司解析如下&#xff1a; 一、提升职…

镍氢电池性能不减,你敢信?

在科技领域&#xff0c;研究者的探索永无止境&#xff0c;尤其在可再生能源和电动交通工具迅速发展的今天&#xff0c;一种成熟的可充电电池技术——镍氢电池&#xff0c;在多个领域中发挥着至关重要的作用。它不仅环保、高效&#xff0c;还具有出色的循环次数特性&#xff0c;…

MySQL Undo Log

总结自bojiangzhou undo log称为撤销日志或回滚日志。在一个事务中进行增删改操作时&#xff0c;都会记录对应的 undo log。在对数据库进行修改前&#xff0c;会先记录对应的 undo log&#xff0c;然后在事务失败或回滚的时候&#xff0c;就可以用这些 undo log 来将数据回滚到…

除自身以外数组的乘积_前缀和

文章目录 1、描述2、思路4、notes6、code 1、描述 题目链接 238.除自身以外数组的乘积 给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素…

iPhone数据恢复篇:iPhone 数据恢复软件有哪些

问题&#xff1a;iPhone 15 最好的免费恢复软件是什么&#xff1f;我一直在寻找一个恢复程序来恢复从iPhone中意外删除的照片&#xff0c;联系人和消息&#xff0c;但是我有很多选择。 谷歌一下&#xff0c;你会发现许多付费或免费的iPhone数据恢复工具&#xff0c;声称它们可…

数据结构--二叉树相关性质

1.性质 1.满二叉树每层节点个数&#xff1a;等比数列 3.&#xff08;重要&#xff09;任意二叉树&#xff1a;度为0&#xff08;叶子节点&#xff09;的比度为2的永远多一个。。度&#xff1a;就是看有多少孩子 如下图解析&#xff1a;&#xff08;用推到归纳来分析&#xff…

【测开能力提升-fastapi框架】介绍简单使用

0. 前期说明 立了很多flag(开了很多专题)&#xff0c;但坚持下来的没几个。也干了很多测试工作(起初是硬件(Acoustic方向)测试 - 业务功能测试 - 接口测试 - 平台功能测试 - 数据库测试 - py自动化测试 - 性能测试 - 嵌入式测试 - 到最后的python测试开发)&#xff0c;最终还是…

股票分析系统设计方案大纲与细节

股票分析系统设计方案大纲与细节 一、引言 随着互联网和金融行业的迅猛发展,股票市场已成为重要的投资渠道。投资者在追求财富增值的过程中,对股票市场的分析和预测需求日益增加。因此,设计并实现一套高效、精准的股票分析系统显得尤为重要。本设计方案旨在提出一个基于大…

3d已经做好的模型怎么改单位?---模大狮模型网

在展览3D模型设计行业中&#xff0c;经常会遇到需要将已完成的模型进行单位转换的需求。这可能涉及从一种度量单位转换为另一种&#xff0c;例如从英制单位转换为公制单位&#xff0c;或者根据特定的展览场地要求进行尺寸调整。本文将探讨如何有效地修改已完成的3D模型的单位&a…

VS Code 扩展如何发布到私有Nexus的正确姿势

VS Code扩展的发布 VS Code 扩展的发布需要使用到vsce&#xff0c;vsce是一个用于打包、发布和管理 VS Code 扩展的命令行工具。可以通过 npm 来全局安装它&#xff1a; npm install -g vsce发布扩展到微软的应用市场 VS Code 的应用市场基于微软自己的 Azure DevOps。要发布…

redis的部署及基本使用

一、redis部署 1、关闭防火墙 关闭防火墙&#xff1a; systemctl stop firewalld.service 状态&#xff1a; firewall-cmd --state 卸载防火墙 yum remove firewalld 2、CentOS7部署redis 1、检查编译运行环境&#xff0c;是否有 GCC 编译器 检查环境&#xff08;gcc&…