前言
课程需要哪些前置技术:
- 需要软件
- MySQL 软件(8+ 版本)
- MySQL 可视化工具(客户端)
- IEDA
- SQL 语句
- 掌握数据库连接命令
- 掌握基本的 DDL、DQL、DML 等命令
- 掌握数据库事务的概念
- Java 基础语法
- 多态机制
- 基本容器使用(集合、数组等)
- 泛型
- 反射
技术 | 版本 | 备注 |
---|---|---|
IDEA | 2022.2 | 最新版本 |
JDK | 1.8 | |
mysql-jdbc 驱动 | 8.0.27 | 8.0.25+ |
druid | 1.1.21 | |
mysql | 8.0.25 |
JDBC 技术概念和理解
JDBC:Java Database Connectivity,Java 连接数据库技术
通俗点说,在 Java 代码中,使用 JDBC 提供的方法,可以发送字符串类型的 SQL 语句到数据库管理软件(MySQL、Oracle 等),并且获取语句执行结果,进而实现数据库数据 CURD 操作的技术
总结:
- JDBC 是 Java Database Connectivity 单词的缩写,翻译为 Java 连接数据库
- JDBC 是 Java 程序连接数据库的技术统称
- JDBC 由 Java 语言的规范(接口)和各个数据库厂商的实现驱动(jar)组成
- JDBC 是一种典型的面向接口编程
- JDBC 优势
- 只需要学习 JDBC 规范接口的方法,即可操作所有的数据库软件
- 项目中期切换数据库软件,只需要更换对应的数据库驱动 jar 包,不需要更改代码
JDBC 核心 API
JDBC 技术组成:
- JDK 下 JDBC 规范接口,在
java.sql
和javax.sql
包中的 API- 为了项目代码的可移植性,可维护性,SUN 公司从最初就制定了 Java 程序连接各种数据库的统一接口规范。这样的话,不管是连接哪一种 DBMS 软件,Java 代码可以保持一致性。
- 各个数据库厂商提供的驱动 jar 包
- 因为各个数据库厂商的 DBMS 软件各有不同,那么内部如何通过 SQL 实现增、删、改、查等管理数据,只有这个数据库厂商自己更清楚,因此把接口规范的实现交给各个数据库厂商自己实现。
- jar 包是什么?Java 程序打成的一种压缩包格式,可以将这些 jar 包引入项目中,然后就可以使用这个 Java 程序中类和方法以及属性了
涉及具体核心类和接口:
DriverManager
:获取连接- 将第三方数据库厂商的实现驱动 jar 注册到程序中
- 可以根据数据库连接信息获取
Connection
对象
Connection
:建立连接- 和数据库建立的连接,在连接对象上,可以多次执行数据库 CRUD 动作
- 可以获取
Statement
、PreparedStatement
、CallableStatement
对象
- 发送 SQL 语句
Statement
:静态 SQL 语句(没有动态值、没有条件值)PreparedStatement
:预编译 SQL 有语句(有动态值)CallableStatement
:- 具体发送 SQL 语句到数据库管理软件的对象
- 不同发送方式稍有不同,
PreparedStatement
最常使用
Result
:查询的结果(对查询语句才有)- 面向对象思维的产物:抽象成数据库的查询结果表
- 存储 DQL 查询数据库结果的对象
- 需要我们进行解析,获取具体的数据库数据
为什么选择全新 8+ 版本 mysql-jdbc 驱动?
https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-whats-new.html
MySQL 软件知名版本迭代时间:
版本号 | 迭代时间 | 大小 |
---|---|---|
mysql-8.0.25 | 4月 30, 2021 | 435.7M |
mysql-5.7.25 | 1月 10, 2019 | 387.7M |
mysql-5.5.30 | 9月 19, 2012 | 201.5M |
性能提升
官方表示 MySQL 8.0 的速度要比 MySQL 5.7 快 2 倍。
MySQL 8.0 在读/写工作负载、IO 密集型工作负载、以及高竞争工作负载时相比 MySQL5.7 有更好的性能。
支持 JDBC 规范 4.2+ 版本新特性
Java JDBC 规范驱动版本和更新时间:
Year | JDBC Version | JSR Specification | JDK Implementation |
---|---|---|---|
2017 | JDBC 4.3 | JSR 221 | Java SE 9 |
2014 | JDBC 4.2 | JSR 221 | Java SE 8 |
2011 | JDBC 4.1 | JSR 221 | Java SE 7 |
2006 | JDBC 4.0 | JSR 221 | Java SE 6 |
2001 | JDBC 3.0 | JSR 54 | JDK 1.4 |
1999 | JDBC 2.1 | JDK 1.2 | |
1997 | JDBC 1.2 | JDK 1.1 |
JDBC 规范版本更新内容(了解):
- JDBC 4.3 中引入的主要新功能包括:
- 添加了对分片的支持
- 添加了
java.sql.连接生成器
接口 - 添加了
java.sql.ShardigKey
接口 - 添加了
java.sql.分片密钥生成器
接口 - 添加了
.sql.XA 连接生成器
接口 - 添加了
javax.sql.池连接生成器
接口
- JDBC 4.2 中引入的主要新功能包括:
- 添加了对引用光标的支持
- 添加了
java.sql.驱动程序操作
接口 - 添加了
.sql.SQLType
接口 - 添加
java.sql.JDBCType
枚举 - 一些 JDBC 接口更改
- JDBC 4.1 中引入的主要新功能包括:
- 添加了对“使用资源试用”语句的支持
- 增强的日期值和时间戳值
- 从 Java 对象到 JDBC 类型的其他映射
- 一些 JDBC 接口更改
- JDBC 4.0 中引入的主要新功能包括:
- 自动加载
java.sql.驱动程序
- 数据类型支持
- 国家字符集转换支持
- 自动加载
- 由于 JDBC 4.3 API 是向后兼容的,因此将 Java SE 9 或更高版本与 JDBC 4.2、4.1、4.0 或 3.0 驱动程序一起使用没有问题,只要不使用 JDBC 4.3 API 中引入的新方法或类。
支持 JDK 8 版本语法变更新特性
Connector/J 8.0 是专门为在 Java 8 平台上运行而创建的。
众所周知,Java8 与早期的 Java 版本高度兼容,但还是存在少量不兼容性,所以,驱动技术版本尽量选择支持 JDK 8.0+
其他
支持全新的驱动 API,增加自动时区选择和默认 UTF-8 编码格式等配置