【Day 8】MySQL 多表查询 + Mybatis 基础

server/2024/10/21 12:00:57/

 1 多表查询

笛卡尔积:在数学中,两个集合(A集合 和 B集合)的所有组合情况

在多表查询时,需要消除无效的笛卡尔积

select * from tb_emp,tb_dept where dept_id = tb_dept.id;

多表查询分为:

  • 连接查询

内连接:相当于查询A、B交集部分数据

外连接:

        1)左外连接:查询左表所有数据(包括两张表交集部分数据)

        2)右外链接:查询右表所有数据(包括两张表交集部分数据)

  • 子查询

1.1 内连接

  • 隐式内连接

select 字段列表 from 表1, 表2 where 条件...;

  • 显式内连接

select 字段列表 from 表1 [inner] join 表2 on 链接条件...;

1.2 外连接

  • 左外连接

select 字段列表 from 表1 left [outer] join 表2 on 链接条件;

  • 右外链接

select 字段列表 from 表1 right [outer] join 表2 on 链接条件;

1.3 子查询

子查询(嵌套查询):SQL 语句中嵌套 select 语句

select * from t1 where column1 = (select column1 from t2...)

分类

  • 标量子查询:子查询返回的结果为单个值
  • 列子查询:子查询返回的结果为一列
  • 行子查询:子查询返回的结果为一行
  • 表子查询:子查询返回的结果为多行多列

标量子查询:

列子查询

行子查询

表子查询

2 事务

背景:员工属于部门,当某个部门删除,员工也要删除,如果员工在删除时,失败,此时出现表结构不一致

事务:是一组操作的集合,它是一个不可分割的工作单位

事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败

注:默认MySQL的事务是自动提交的,也就是说,当执行一条DML语句,MySQL会立即隐式的提交事务

MySQL 的事务控制:

  • 开启事务:start transaction; / begin;
  • 提交事务:commit;
  • 回滚事务:rollback;

2.1 事务的四大特性

 3 索引

索引(index)是帮助数据库高效获取数据的数据结构

优点:

  • 提高数据查询的效率,降低数据库的 IO 成本
  • 通过索引列对数据进行排序,降低数据排序的成本,降低 CPU 消耗

缺点:

  • 索引会占用存储空间
  • 索引大大提高了查询效率,同时却也降低了 insert、update、delete 的效率

结构

创建索引

create [unique] index 索引名 on 表名(字段名,...);

查看索引

show index from 表名;

删除索引

drop index 索引名 on 表名;

 

4 Mybatis

MyBatis 是一款优秀的 持久层 框架,用于简化 JDBC 的开发

官网:MyBatis中文网

4.1 Mybatis 入门程序

第一步

创建 springboot 工程,User 表(在 pojo 里面),数据库表 mybatis

第二步

配置数据库的链接信息,注意,数据库的名字 mybatis

配置四要素

 

第三步

 单元测试:

4.2 配置 SQL 提示 

但是此时 user 识别不出来,原因是 IDEA 没有与数据库建立链接

建立链接:

4.3 JDBC

JDBC(JavaDataBase Connectivity),使用 Java 语言操作关系型数据库的 API

  • sun公司官方定义的一套操作所有关系型数据库的规范,即接口
  • 各个数据库厂商去实现这套接口,提供数据库驱动 jar 包
  • 我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动 jar 包中的实现类

​​​​​​​

                                 ↓

4.4 数据库连接池

  • 数据库连接池是个容器,负责分配、管理数据库连接(Connection)
  • 它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个
  • 释放空闲时间超过最大空闲时间的连接,来避免因为没有释放连接而引起的数据库连接遗漏

优点:

  • 资源重用
  • 提升系统响应速度
  • 避免数据库连接遗漏

官方(sun 公司)提供的数据库连接池接口,由第三方组织实现此接口

功能:获取链接

常见产品:

  • C3P0
  • DBCP
  • Druid(阿里巴巴)
  • Hikari(springboot 默认)

切换连接池:

4.5 Lombok

之前的 User 类代码太多

 使用 lombok

 

        Lombok 是一个实用的 Java 类库,能通过注解的形式自动生成构造器、getter/setter、equals、hashcode、tostring等方法,并可以自动化生成日志变量,简化 Java 开发、提高效率

注解作用
@Getter/Setter

为所有属性提供 get/set 方法

@ToString给类生成 toString 方法
@EqualsAndHashCode根据类所拥有的非静态字段自动重写 equals 方法和 hashCode 方法
@Data

提供了更综合的生成代码功能

(@Getter + @Setter + @ToString + @EqualsAndHashCode)

@NoArgsConstructor为实体类生成无参构造器方法
@AllArgsConstructor为实体类生成除了 static 修饰的字段之外带有各参数的构造器方法

添加 lombok 依赖:

 

然后在 User 里面

@Data // @Getter + @Setter + @ToString + @EqualsAndHashCode
@NoArgsConstructor // 无参构造
@AllArgsConstructor // 有参构造
public class User {private Integer id;private String name;private Short age;private Short gender;private String phone;
}


http://www.ppmy.cn/server/19914.html

相关文章

【ARMv9 DSU-120 系列 5 -- CHI Interface】

请阅读【Arm DynamIQ™ Shared Unit-120 专栏 】 文章目录 DSU-120 CHI BUSAddress Target Groups配置步骤映射和管理Hashing for CHI transaction distribution散列过程和地址目标组识别散列函数定义两个地址目标组的散列四个地址目标组的散列八个地址目标组的散列架构框图

什么是ISP,为什么跨境推荐ISP?

ISP,全称Internet Service Provider,即“互联网服务提供商”。它是为个人或企业提供访问、使用或参与互联网服务的组织,主要为用户提供互联网接入业务、信息业务和增值业务。ISP是经国家主管部门批准的正式运营企业,享受国家法律保…

【bugfix】error in chunk.js from uglifyjs

检查是否是因为新安装的包不支持es5,通过babel 或者 fork 打包输出 es5以兼容老项目。

每日算法之两两交换链表中的节点

题目描述 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 示例 1: 输入:head [1,2,3,4] 输出&…

100290. 使矩阵满足条件的最少操作次数

https://leetcode.cn/problems/minimum-number-of-operations-to-satisfy-conditions/description/ 正难则反。 暴力的遍历每一修改的情况,0-9;根据前一列的状态进行转移过来, 下面是状态转移方程 f ( i , j ) m a x ( f ( i , j ) , f ( i…

《HCIP-openEuler实验指导手册》1.7 Apache虚拟主机配置

知识点 配置步骤 需求 域名访问目录test1.com/home/source/test1test2.com/home/source/test2test3.com/home/source/test3 创建配置文件 touch /etc/httpd/conf.d/vhost.conf vim /etc/httpd/conf.d/vhost.conf文件内容如下 <VirtualHost *.81> ServerName test1.c…

浅谈叉车车载电脑的市场现状

叉车的起源 叉车源于美国&#xff0c;兴于日本&#xff0c;虽然中国起步较晚&#xff0c;但是近些年来发展迅速。叉车又称叉式装载车&#xff0c;是对于成件托盘类货物进行装卸、堆垛和短距离运输&#xff0c;实现重物搬运作业的轮式工业车辆。 叉车的分类 叉车分为以上六大类…

【1569】jsp学生学籍管理系统Myeclipse开发sqlserver数据库web结构jsp编程计算机网页项目

一、源码特点 jsp 学生学籍管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为sqlserver2…