JDBC(Java Database Connectivity)是Java语言连接数据库的标准API,本质是一套接口规范(java.sql包下的类和接口),由数据库厂商提供驱动实现类(如MySQL的mysql-connector-java.jar
),实现Java程序与不同数据库的交互。
一、安装mysql-connector-java.jar文件
下载地址(官网):MySQL :: Download Connector/J
注意:我的MySQL版本是8.0,所以下载一个相近版本即可
1.这里选一个8.0左右的都行,如果你的MySQL版本是5.0那么就选择5.1左右的版本!!!
2.最后点击下载即可
3.下载完后进行解压:
4.双击进入文件夹,找到jar文件 ,单击右键选择复制
5.进入idea,在自己的项目下新建一个libs目录并将jar文件粘贴
6.选中jar文件右键选择“Add as Library”(即:添加为库)
7.点击确定即可
8.如果出现了jdbc的一些包和接口那么就成功了
二、jdbc连接MySQL的方式
方法一:直接实例化Driver(静态加载)
实现步骤:
- 直接创建
com.mysql.cj.jdbc.Driver
对象 - 通过
Driver.connect()
方法传递URL和Properties
代码:
@Test
public void connect01() throws SQLException {
Driver driver = new Driver(); // 显式依赖MySQL驱动类
String url = "jdbc:mysql://localhost:3306/mydb";
Properties props = new Properties();
props.setProperty("user", "root");
props.setProperty("password", "root");
Connection conn = driver.connect(url, props); // 直接调用connect方法
}
注意事项:
1、接口名不要写错:import com.mysql.cj.jdbc.Driver;
2、URL格式是:jdbc:mysql://主机:端口/数据库名
3、MySQL用户名和密码要填自己的,不要写错了
方法二:反射动态加载Driver
实现步骤:
- 通过
Class.forName()
反射加载驱动类 - 实例化
Driver
对象后调用connect()
代码:
@Test
public void connect02() throws Exception {
Class<?> clazz = Class.forName("com.mysql.cj.jdbc.Driver");
Driver driver = (Driver) clazz.newInstance();
Properties properties = new Properties();
properties.setProperty("user","root");
properties.setProperty("password","root");
String url="jdbc:mysql://localhost:3306/mydb";
Connection connect = driver.connect(url, properties);
}
方法三:DriverManager统一管理驱动
实现步骤:
- 反射加载驱动类
- 通过
DriverManager.registerDriver()
注册驱动 - 使用
DriverManager.getConnection()
获取连接
代码:
@Test
public void connect03() throws Exception {
Class<?> clazz = Class.forName("com.mysql.cj.jdbc.Driver");
Driver driver = (Driver) clazz.newInstance();
String name="root";
String password="root";
String url = "jdbc:mysql://localhost:3306/mydb";
DriverManager.registerDriver(driver); // 注册驱动到DriverManager
Connection conn = DriverManager.getConnection(url, user, password);
}
方法四:自动驱动注册(推荐)
实现步骤:
- 仅需反射加载驱动类(无需实例化或注册)
- 直接调用
DriverManager.getConnection()
@Test
public void connect04() throws Exception {
Class.forName("com.mysql.cj.jdbc.Driver"); // 触发驱动静态代码块自动注册
String name = "root";
String password ="root";
String url = "jdbc:mysql://localhost:3306/mydb";
Connection conn = DriverManager.getConnection(url, user, password);
}
原理:(在com.mysql.cj.jdbc.Driver类中查看源码)
- MySQL驱动类在静态代码块中自动注册到
DriverManager
public class Driver extends NonRegisteringDriver implements java.sql.Driver {
public Driver() throws SQLException {
}
static {
try {
DriverManager.registerDriver(new Driver());
} catch (SQLException var1) {
throw new RuntimeException("Can't register driver!");
}
}
}
类加载时自动向DriverManager
注册自身,所以无需手动调用registerDriver()
方法五:配置文件解耦(企业级方案)
实现步骤:
1.创建mysql.properties
文件存储配置:
src目录下创建该文件即可
配置以下信息,注意用户名和密码是自己的
user=root
password=root
url=jdbc:mysql://localhost:3306/mydb?rewriteBatchedStatements=true
driver=com.mysql.cj.jdbc.Driver
2.通过Properties
类读取配置并连接:
@Test
public void connect05() throws Exception {
Properties properties = new Properties();
properties.load(new FileInputStream("src\\mysql.properties"));
String user = properties.getProperty("user");
String password = properties.getProperty("password");
String url = properties.getProperty("url");
String driver = properties.getProperty("driver");
Class.forName(driver);
Connection connection = DriverManager.getConnection(url, user, password);
);
}
方法对比:
方法 | 耦合性 | 扩展性 | 代码复杂度 | 适用场景 |
---|---|---|---|---|
方法一 | 高 | 差 | 低 | 快速验证 |
方法二、三、四 | 中 | 中 | 中 | 多数据库兼容场景 |
方法五 | 低 | 高 | 高 | 企业级项目(推荐) |
个人还是推荐方法五,因为便于代码以后扩展