当前位置: 首页 > news >正文

对于多个表多个字段进行查询、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;

在这里插入图片描述
带条件的

SELECT s.name AS student_name,s.age,s.sex,t.name AS teacher_name,t.position,t.teaching_experience
FROM students AS s
LEFT JOIN teachers AS t ON s.class_id = t.class_id
WHERE s.class_id IN (2, 3, 5);

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.lryc.cn/news/399383.html

相关文章:

  • 护网HW面试常问——组件中间件框架漏洞(包含流量特征)
  • 招投标数据采集:为企业决策提供数据支持
  • 02:项目二:感应开关盖垃圾桶
  • eNsp公司管理的网络NAT策略搭建
  • MUR2060CTR-ASEMI无人机专用MUR2060CTR
  • Manim的代码练习02:在manim中Dot ,Arrow和NumberPlane对象的使用
  • datawhale - 基于术语词典干预的机器翻译挑战赛 (一)
  • 【JavaScript脚本宇宙】提升用户体验:探索 JavaScript 命令行界面开发工具
  • ubuntu18.04安装显卡驱动后无法进入桌面的解决办法
  • javaScript的面试重点--预解析
  • Gitea 仓库事件触发Jenkins远程构建
  • springboot+vue 开发记录(九)后端打包部署运行
  • 昇思25天学习打卡营第20天 | 基于MindNLP+MusicGen生成自己的个性化音乐
  • windows USB 设备驱动开发-USB主控制开发(一)
  • Dubbo 负载均衡(Load Balance)
  • ArcGIS Pro SDK (九)几何 3 点
  • 基于神经网络的分类和预测
  • VR头显如何低延迟播放8K的RTSP|RTMP流
  • 2、ASPX、.NAT(环境/框架)安全
  • 在家上网IP地址是固定的吗?
  • 交换机和路由器的工作流程
  • 算法笔记——LCR
  • ChatGPT对话:如何制作静态网页?
  • k8s(二)
  • ClickHouse表引擎概述
  • jenkins系列-04-jenkins参数化构建
  • Flutter框架时间线梳理
  • RAG 效果提升的最后一步—— 微调LLM
  • C语言 | Leetcode C语言题解之第230题二叉搜索树中第K小的元素
  • YOWOv2(yowov2)动作识别+Fastreid身份识别 详细安装与实现