获取MySql
连接非常方便
第一步:引入POM
依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>fun.gosuncn</groupId>
<artifactId>MySql</artifactId>
<version>1.0</version>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.21</version>
</dependency>
</dependencies>
</project>
第二步:获取连接
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Test {
private static final String driverName = "com.mysql.cj.jdbc.Driver";
private static final String url = "jdbc:mysql://gosuncn.fun:3306/gosuncn?serverTimezone=Asia/Shanghai";
private static final String user = "gosuncn";
private static final String password = "gosuncn";
public static void main(String[] args) throws ClassNotFoundException {
Class.forName(driverName);
try (Connection connection = DriverManager.getConnection(url, user, password)) {
System.out.println("connection = " + connection);
} catch (SQLException exception) {
System.out.println("SQLException Happening ...");
}
}
}
- 加载驱动:
Class.forName(driverName);
- 获取连接:
DriverManager.getConnection(url, user, password)
其实,1. 加载驱动
可以省略不写,原因是:
public class DriverManager {
// ...
static {
loadInitialDrivers();
println("JDBC DriverManager initialized");
}
// ...
}
JavaSPI机制加载驱动com.mysql.cj.jdbc.Driver
类。
什么是JavaSPI
机制?
演示一下:
先定义一个接口,再定义几个实现类。
在类路径下,创建一个文件夹名叫META-INF
,在文件夹META-INF
里再创建文件夹名叫services
,在文件夹services
中创建一个文件,这个文件的名字就是接口的全路径名,如上图中的“fun.gosuncn.Greeting
”。文件中写入接口的实现类,以换行
分割。
通过java.util.ServiceLoader
类去加载,通过上图的运行结果看出,已经正确的输出的hello()
方法的内容。
引入依赖mysql-connector-java
后
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.21</version>
</dependency>
</dependencies>
public class Test {
public static void main(String[] args) {
ServiceLoader<Driver> drivers = ServiceLoader.load(Driver.class);
for (Driver driver : drivers) {
System.out.println(driver);
}
}
}
可以输出
com.mysql.cj.jdbc.Driver@10d59286
原因是:
在mysql-connector-java-8.0.21.jar
包下有文件夹META-INF
、文件夹META-INF
下有文件夹services
、文件夹services
下有java.sql.Driver
文件,内容是:
com.mysql.cj.jdbc.Driver
所以,就把com.mysql.cj.jdbc.Driver
类的对象给创建了。