一、JDBC API简介
1、定义
- Java数据库连接(Java Database Connectivity,简称JDBC)是 Java 语言中提供访问关系型数据库(大多数情况下是关系型数据库)的接口
- 源码地址:https://github.com/RononoaZoro/mybatis-book/tree/master 的 mybatis-book ( mybatis-chapter02 )
- 文章内容出自《Mybatis 3 源码深度解析》第二章
2、建立数据库连接
-
1)、JDBC API 中定义了 Connection 接口,用来表示与底层数据源的链接,JDBC 应用有两种方式获取 Connection 对象
-
1、DriverManager
-
// 获取Connection对象 Connection connection = DriverManager.getConnection("jdbc:hsqldb:mem:mybatis","sa", "");
-
2、DataSource:
-
// 创建DataSource实例 DataSource dataSource = new UnpooledDataSource("org.hsqldb.jdbcDriver", "jdbc:hsqldb:mem:mybatis", "sa", ""); // 获取Connection对象 Connection connection = dataSource.getConnection();
-
-
2)、JDBC API 中定义了两个 DataSource 比较重要的扩展,用于支撑企业级应用
- 1、ConnectionPoolDataSource :支持缓存和复用 Connection 对象,这样可以很大程度提升应用性能和伸缩性
- 2、XADataSource :该实例返回的 Connection 对象能够支持分布式事务
3、执行 SQL 语句
-
1)、通过 Statement 执行 Sql 语句
-
Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery("select * from user");
4、处理 SQL 执行结果
-
1)、通过 ResultSet 处理查询结果集
-
// 遍历ResultSet ResultSetMetaData metaData = resultSet.getMetaData(); int columCount = metaData.getColumnCount(); while (resultSet.next()) { for (int i = 1; i <= columCount; i++) { String columName = metaData.getColumnName(i); String columVal = resultSet.getString(columName); System.out.println(columName + ":" + columVal); } System.out.println("---------------------------------------"); }
5、使用 JDBC 操作数据库
-
1)、代码示例
-
package com.blog4java.jdbc; import com.blog4java.common.DbUtils; import com.blog4java.common.IOUtils; import org.apache.ibatis.datasource.unpooled.UnpooledDataSource; import org.junit.Test; import javax.sql.DataSource; import java.sql.Connection; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.Statement; public class Example02 { @Test public void testJdbc() { // 初始化数据 DbUtils.initData(); try { // 1、创建DataSource实例 DataSource dataSource = new UnpooledDataSource("org.hsqldb.jdbcDriver", "jdbc:hsqldb:mem:mybatis", "sa", ""); ///2、获取Connection对象 Connection connection = dataSource.getConnection(); Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery("select * from user"); ///3、遍历ResultSet ResultSetMetaData metaData = resultSet.getMetaData(); int columCount = metaData.getColumnCount(); while (resultSet.next()) {