JDBC(Java Database Connectivity)定义了客户端如何访问数据库的API,JDBC可以允许一个应用程序中有多个实现。JDBC定义了驱动(Driver)的接口,可以将驱动动态加载并交给DriverManger管理,且DriverManger可以当做Connection的工厂(提供了getConnection方法)。
JDBC有几个关键组件:
- Driver 驱动接口,每个驱动类都要实现(即平时配置的driverClass)
- DriverManger 管理Driver,并调用Driver的connection方法来构建一个数据库连接
- Connection 一个数据库连接
- Statement 执行静态SQL语句并返回其生成的结果的对象。
- PreparedStatement 表示一个预编译的Statement,可以通过重用提升效率
- CallableStatement 执行存储过程的Statement
简化的图例如下所示:
然后可以看一下类图的关系
接下来通过一个简单的demo看一下,如何通过这些原生API来和数据库交互,代码如下:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JdbcDemo {
public static void main(String[] args) {
try {
String driverClass = "com.mysql.cj.jdbc.Driver";
Class.forName(driverClass);
String url = "jdbc:mysql://localhost:3306/order?useSSL=false";
String user = "root";
String password = "000000";
Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement();
String sql = "SELECT NAME FROM T_ARG_PRODUCT WHERE ID = '809195658207559680'";
ResultSet resultSet = stmt.executeQuery(sql);
while (resultSet.next()) {
System.out.println(resultSet.getString(1));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
打印结果:
红米K40Pro
可以看到通过jdbc的接口我们可以和数据库交互,进行CRUD,达到预期目的,但是通过jdbc操作数据库较为麻烦,所以诞生了诸如Mybatis、Hibernate等一系列框架。