前言JDBC 是 Java 操作数据库的底层核心技术是 MyBatis、SpringBoot 持久层的基础。一、JDBC 概述1. 什么是 JDBCJDBCJava Database Connectivity是 Sun 公司制定的一套 Java 访问关系型数据库的统一接口规范。2. JDBC 本质一套标准接口不提供具体实现MySQL、Oracle 等数据库厂商提供驱动 JAR 包实现这套接口面向接口开发切换数据库几乎不用修改业务代码3. 优势统一标准、低耦合、程序可移植性好二、JDBC 开发准备新建 Java 项目命名为 jdbc-demo项目根目录创建 lib 文件夹放入驱动包mysql-connector-java-5.1.48.jar将 JAR 包添加到项目依赖库三、JDBC 开发七步流程注册驱动获取数据库连接定义 SQL 语句创建 Statement SQL 执行对象执行 SQL 语句处理执行结果关闭释放资源四、核心 API 讲解JDBC 的核心 API 是理解和使用 JDBC 的基础本节将详细讲解 DriverManager 和 Connection 两个核心类。1. DriverManager驱动管理器DriverManager是 JDBC 的驱动管理类主要负责注册驱动加载并注册数据库驱动程序建立连接根据连接参数创建并返回数据库连接对象其核心方法是getConnection()用于获取数据库连接。2. Connection数据库连接Connection代表 Java 程序与 MySQL 数据库之间的会话连接通道是所有数据库操作的基础。3. getConnection() 方法详解3.1 方法原型// DriverManager 中的静态方法 public static Connection getConnection(String url, String user, String password) throws SQLException // 使用示例 String url jdbc:mysql://localhost:3306/db1; String user root; String password 1234; Connection conn DriverManager.getConnection(url, user, password);作用建立 Java 应用与 MySQL 数据库之间的连接返回 Connection 对象。这是 JDBC 七步流程中的第二步也是核心步骤。3.2 三个参数完整解析1url数据库连接路径标准语法格式jdbc:mysql://主机地址:端口号/数据库名?参数名1参数值1参数名2参数值2...各组成部分说明jdbc:mysql://固定前缀表示使用 MySQL 的 JDBC 驱动主机地址数据库服务器 IP 地址或域名localhost 或 127.0.0.1 表示本机端口号MySQL 服务端口默认 3306数据库名要连接的具体数据库名称?参数键值对可选参数用于配置连接属性标准示例jdbc:mysql://127.0.0.1:3306/db1本机简写规则当数据库部署在本机且使用默认端口 3306 时可省略 IP 和端口jdbc:mysql:///db1 // 注意是三个斜杠常用配置参数useSSLfalse关闭 SSL 安全连接MySQL5 需要可消除控制台警告serverTimezoneAsia/Shanghai设置服务器时区MySQL8 必须配置characterEncodingutf8设置字符编码useUnicodetrue使用 Unicode 字符集2user数据库用户名连接数据库时使用的登录用户名。示例中固定使用root超级管理员账户。注意实际项目中建议创建专用账户避免使用 root 账户。3password数据库密码对应用户名的登录密码。示例中密码为1234。安全提示生产环境务必使用强密码不要使用简单密码如 1234。4. 课堂代码示例以下是课程中获取数据库连接的标准代码片段// 2. 获取数据库连接 String url jdbc:mysql://127.0.0.1:3306/db1; String username root; String password 1234; Connection conn DriverManager.getConnection(url, username, password);代码说明定义连接 URL指定数据库地址、端口和数据库名定义用户名和密码调用DriverManager.getConnection()方法获取 Connection 对象5. MySQL 版本适配指南5.1 MySQL5课程使用版本驱动类com.mysql.jdbc.Driver连接 URLjdbc:mysql://127.0.0.1:3306/db1?useSSLfalse说明MySQL5 需要添加useSSLfalse参数来关闭 SSL 连接避免控制台警告信息。5.2 MySQL8驱动类com.mysql.cj.jdbc.Driver连接 URLjdbc:mysql://127.0.0.1:3306/db1?useSSLfalseserverTimezoneAsia/Shanghai关键差异驱动类名不同增加了cj包必须添加时区参数serverTimezone否则会抛出时区异常建议同时添加characterEncodingutf8和useUnicodetrue参数完整 MySQL8 连接示例// MySQL8 连接示例 String url jdbc:mysql://localhost:3306/db1?useSSLfalseserverTimezoneAsia/ShanghaicharacterEncodingutf8useUnicodetrue; Connection conn DriverManager.getConnection(url, root, 1234);6. 核心要点总结DriverManager.getConnection()是建立数据库连接的核心方法URL 格式必须严格按照jdbc:mysql://主机:端口/数据库?参数的格式编写版本差异MySQL5 和 MySQL8 在驱动类和连接参数上有重要区别连接参数可根据实际需求灵活配置如时区、字符集、SSL 等获取 Connection 对象后才能进行后续的 SQL 执行和结果处理五、操作代码package com.itheima.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class JDBCSelectDemo { public static void main(String[] args) throws Exception { //1. 注册驱动 Class.forName(com.mysql.jdbc.Driver); //2. 获取连接 String url jdbc:mysql://127.0.0.1:3306/db1; String username root; String password 1234; Connection conn DriverManager.getConnection(url, username, password); //3. 定义查询SQL String sql select * from account; //4. 创建执行对象 Statement stmt conn.createStatement(); //5. 执行查询获取结果集 ResultSet rs stmt.executeQuery(sql); //6. 遍历处理结果 while (rs.next()) { int id rs.getInt(id); String name rs.getString(name); double money rs.getDouble(money); System.out.println(id name money); } //7. 释放资源 rs.close(); stmt.close(); conn.close(); } }六、知识点细节补充1. 驱动注册说明Class.forName(com.mysql.jdbc.Driver);MySQL5.1 及以上版本可省略该行依靠 SPI 机制自动加载驱动2. URL 地址详解标准格式jdbc:mysql://IP地址:端口号/数据库名本地本机简写jdbc:mysql:///db1MySQL5 版本无需时区参数MySQL8 必须添加时区配置3. 两个核心执行方法executeUpdate()执行新增、删除、修改语句返回受影响行数executeQuery()仅执行 SELECT 查询语句返回 ResultSet 结果集八、Statement 的优缺点优点语法简单适合入门阶段理解 JDBC 整体流程致命缺点存在严重 SQL 注入安全漏洞SQL 字符串拼接繁琐极易写错无预编译机制重复执行性能较差企业正式开发全部使用 PreparedStatement课程先用 Statement 理解基础流程九、MySQL5 和 MySQL8 版本差异高频报错点MySQL5课程使用版本驱动类com.mysql.jdbc.Driverurljdbc:mysql://127.0.0.1:3306/db1MySQL8驱动类com.mysql.cj.jdbc.Driverurljdbc:mysql://127.0.0.1:3306/db1?serverTimezoneAsia/Shanghai十、原生 JDBC 现存缺陷后续学习路线铺垫模板代码大量重复冗余度高频繁创建、销毁连接资源开销大、性能差Statement 存在注入风险不安全没有内置事务自动化管理优化学习顺序自定义 JDBC 工具类 → 数据库连接池 (Druid/HikariCP) → MyBatis 持久层框架十一、全文总结JDBC 是 Java 操作关系型数据库的底层标准规范七步执行流程是背诵和手写代码的核心考点熟练掌握增删改、查询、资源关闭整套固定写法所有 ORM 持久层框架底层都是对 JDBC 的封装原生 JDBC 必须吃透