本文將介紹如何使用 Spring JDBC 架構、MySQL Connector/J 和 OceanBase 資料庫構建一個應用程式,實現基本的資料庫操作,包括建立表、插入和查詢資料等。
點擊下載 spring-jdbc-mysql-client 樣本工程
前提條件
您已安裝 OceanBase 資料庫並且建立了 MySQL 模式租戶。
您已安裝 JDK 1.8 和 Maven。
您已安裝 Eclipse。
說明本文檔運行代碼使用的工具是 Eclipse IDE for Java Developers 2022-03 版本,您也可以根據個人喜好選擇適合自己的工具啟動並執行範例程式碼。
操作步驟
本文中給出的操作步驟是在 Windows 環境下使用 Eclipse IDE for Java Developers 2022-03 編譯和運行該專案的步驟。如果您使用的是其他動作系統內容或編譯器,那麼操作步驟可能會略有不同。
將
spring-jdbc-mysql-client專案匯入到 Eclipse 中。擷取 OceanBase 資料庫 URL。
修改
spring-jdbc-mysql-client專案中的資料庫連接資訊。運行
spring-jdbc-mysql-client專案。
步驟一:將 spring-jdbc-mysql-client 專案匯入到 Eclipse 中
開啟 Eclipse,在功能表列上選擇 File > Open Projects from File System。
在彈出的對話方塊中,點擊 Directory 按鈕選擇專案所在的目錄,然後點擊 Finish 完成匯入。
說明當使用 Eclipse 匯入 Maven 專案時,Eclipse 會自動檢測專案中的
pom.xml檔案,並根據檔案中描述的依賴關係自動下載所需的依賴庫,並將它們添加到專案中。
查看專案情況。

步驟二:擷取 OceanBase 資料庫 URL
聯絡 OceanBase 資料庫部署人員或者管理員擷取相應的資料庫連接串。擷取串連串操作請參見 擷取串連參數
樣本如下:
obclient -hxxx.xxx.xxx.xxx -P3306 -ua**** -p****** -Dtest根據 OceanBase 資料庫連接串資訊填寫下面 URL 的對應資訊。
jdbc:mysql://$host:$port/$database_name?user=$user_name&password=$password&useSSL=false參數說明:
$host:OceanBase 資料庫連接的網域名稱。$port:提供 OceanBase 資料庫連接連接埠,預設連接埠是 3306。$database_name:需要訪問的資料庫名稱。$user_name:提供租戶的串連賬戶。$password:提供賬戶密碼。
更多有關 MySQL Connector/J 串連屬性資訊,請參見 Configuration Properties。
樣本如下:
jdbc:mysql://xxx.xxx.xxx.xxx:3306/test?user=test_user001@mysql001&password=******&useSSL=false
步驟三:修改 spring-jdbc-mysql-client 專案中的資料庫連接資訊
根據步驟二:擷取 OceanBase 資料庫 URL 中擷取的資訊修改檔案spring-jdbc-mysql-client/src/main/java/com/example/Main.java中的資料庫連接資訊。

樣本如下:
OBServer 節點的 IP 位址為
xxx.xxx.xxx.xxx。訪問連接埠使用的是 3306。
需要訪問的資料庫名稱為
test。租戶的串連賬戶是
test_user001@mysql001。密碼是
******。
代碼如下:
...
String url = "jdbc:mysql://xxx.xxx.xxx.xxx:3306/test?useSSL=false";
String username = "test_user001@mysql001";
String password = "******";
...步驟四:運行 spring-jdbc-mysql-client 專案
在專案導航器視圖中,找到並展開 src/main/java 目錄。
右鍵點擊 Main.java 檔案,然後選擇 Run As > Java Application。

在 Eclipse 的控制台視窗中來查看輸出結果。

專案代碼介紹
點擊 spring-jdbc-mysql-client 下載專案代碼,是一個名稱為 spring-jdbc-mysql-client.zip 的壓縮包。解壓後,得到一個名為 spring-jdbc-mysql-client 的檔案夾。目錄結構如下所示:
spring-jdbc-mysql-client
├── src
│ └── main
│ └── java
│ └── com
│ └── example
│ └── Main.java
└── pom.xml檔案說明:
src:原始碼根目錄。
main:主代碼目錄,包含應用程式的主要邏輯。
java:Java 原始碼目錄。
com:Java 包目錄。
example:樣本專案的包目錄。
Main.java:主類,包含建立表和插入資料等邏輯。
pom.xml:Maven 專案的設定檔,用於管理專案的依賴和構建設定。
pom.xml 代碼介紹
pom.xml檔案是 Maven 專案的設定檔,定義了專案的依賴項、外掛程式和構建規則等資訊。Maven 是一個 Java 專案管理工具,可以自動下載依賴項、編譯和打包專案等操作。
本文pom.xml檔案的代碼主要包括以下幾個部分:
檔案聲明語句。
聲明本檔案是一個 XML 檔案,使用的 XML 版本是
1.0,字元編碼方式是UTF-8。代碼如下:
<?xml version="1.0" encoding="UTF-8"?>配置 POM 的命名空間和 POM 模型版本。
通過
xmlns指定 POM 的命名空間為http://maven.apache.org/POM/4.0.0。通過
xmlns:xsi指定 XML 命名空間http://www.w3.org/2001/XMLSchema-instance。通過
xsi:schemaLocation指定 POM 的命名空間為http://maven.apache.org/POM/4.0.0和 POM 的 XSD 檔案的位置為http://maven.apache.org/xsd/maven-4.0.0.xsd。通過
<modelVersion>元素指定了該 POM 檔案使用的 POM 模型版本為4.0.0。
代碼如下:
<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> <!-- 其他配置 --> </project>配置基本資料。
通過
<groupId>指定專案所屬組織為com.example。通過
<artifactId>指定專案的名稱為spring-jdbc-mysql-client。通過
<version>專案的版本號碼為1.0-SNAPSHOT。
代碼如下:
<groupId>com.example</groupId> <artifactId>spring-jdbc-mysql-client</artifactId> <version>1.0-SNAPSHOT</version>設定項目源檔案的屬性。
指定 Maven 的編譯器外掛程式為
maven-compiler-plugin,並設定了原始碼和目標 Java 版本都為 8。這意味著專案的原始碼使用 Java 8 特性編寫,且編譯後的位元組碼也將相容 Java 8 運行時環境。這樣的設定可以確保專案在編譯和運行時能夠正確地處理 Java 8 的文法和特性。說明Java 1.8 和 Java 8 是同一個版本的不同命名方式。
代碼如下:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>8</source> <target>8</target> </configuration> </plugin> </plugins> </build>設定項目所相依元件。
添加
mysql-connector-java依賴庫,用於與資料庫進行互動:說明本部分代碼定義專案所相依元件是 MySQL Connector/J 的 V5.1.40 版本,如果需要瞭解其他版本的資訊,請參見 MySQL Connector/J。
通過
<groupId>指定依賴項所屬的組織為mysql。通過
<artifactId>指定依賴項的名稱為mysql-connector-java。通過
<version>指定依賴項的版本號碼為5.1.40。
代碼如下:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.40</version> </dependency>添加
spring-jdbc依賴庫:通過
<groupId>指定依賴項所屬的組織為org.springframework。通過
<artifactId>指定依賴項的名稱為spring-jdbc。通過
<version>指定依賴項的版本號碼為5.2.0.RELEASE。
代碼如下:
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.2.0.RELEASE</version> </dependency>
Main.java 代碼介紹
Main.java檔案是樣本程式的一部分,代碼示範了如何使用 Spring JDBC 架構執行資料庫操作。它首先配置了資料庫連接資訊,然後建立了一個JdbcTemplate對象來執行資料庫操作。代碼中還包括了建立表、插入資料和查詢資料的樣本。
本文Main.java檔案的代碼主要包括以下幾個部分:
定義包和匯入必要的類。
聲明當前代碼所屬的包名為
com.example。匯入
JdbcTemplate類,它是 Spring JDBC 架構中的核心類,用於執行資料庫操作。匯入
DriverManagerDataSource類,它是 Spring 提供的一個實現了DataSource介面的資料來源類,用於設定資料庫串連資訊。
代碼如下:
package com.example; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.datasource.DriverManagerDataSource;建立一個
Main類,並定義了main方法。定義一個名為
Main的公用類,作為程式的進入點。類名需要與檔案名稱保持一致。定義一個公用靜態方法
main,作為程式的起始執行點。其他資料庫操作。
代碼如下:
public class Main { public static void main(String[] args) { // 資料庫連接資訊 // 建立資料來源 // 建立 JdbcTemplate 對象 // 建立表 // 插入資料 // 更新資料 // 刪除資料 // 查詢資料 // 刪除表 } }定義資料庫連接資訊。
定義用於串連資料庫的 URL、使用者名稱和密碼。您需要將
$host、$port、$database_name、$user_name和$password替換為實際的資料庫連接資訊。代碼如下:
String url = "jdbc:mysql://$host:$port/$database_name?useSSL=false"; String username = "$user_name"; String password = "$password";參數解釋:
$host:OceanBase 資料庫連接的網域名稱。$port:提供 OceanBase 資料庫連接連接埠,預設連接埠是 3306。$database_name:需要訪問的資料庫名稱。$user_name:提供租戶的串連賬戶。$password:提供賬戶密碼。
建立資料來源。
建立一個
DriverManagerDataSource對象,並配置了資料庫連接的相關資訊,包括驅動類名、資料庫 URL、使用者名稱和密碼。具體步驟如下:建立一個
DriverManagerDataSource對象,用於設定資料庫串連的資訊。設定驅動類名:通過調用
setDriverClassName方法,設定資料庫驅動類名為com.mysql.jdbc.Driver。設定資料庫 URL:通過調用
setUrl方法,設定資料庫的 URL。設定使用者名稱:通過調用
setUsername方法,設定資料庫的使用者名稱。設定密碼:通過調用
setPassword方法,設定資料庫的密碼。
代碼如下:
DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl(url); dataSource.setUsername(username); dataSource.setPassword(password);建立
JdbcTemplate對象。建立一個
JdbcTemplate對象,它是 Spring JDBC 架構的核心類之一。JdbcTemplate提供了執行資料庫操作的方法,如執行 SQL 陳述式、更新資料以及查詢資料等。代碼如下:
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);建立表。
定義一個建立表的 SQL 陳述式,SQL 陳述式中指定表名為
test_springjdbc,並定義了兩個列,一個是名為id的INT類型列,另一個是名為name的VARCHAR(20)類型列。執行建立表的 SQL 陳述式,
jdbcTemplate對象通過調用execute方法,執行了上述定義的建立表的 SQL 陳述式。在控制台輸出一條成功建立表的訊息。
代碼如下:
String createTableSql = "CREATE TABLE test_springjdbc (id INT, name VARCHAR(20))"; jdbcTemplate.execute(createTableSql); System.out.println("Create table successfully.");插入資料。
定義插入資料的 SQL 陳述式,SQL 陳述式中指定了要插入的表為
test_springjdbc,列為id和name,插入了兩行資料,分別是(1,'A1')、(2,'A2')和(3,'A3')。執行插入資料的 SQL 陳述式,
jdbcTemplate對象通過調用update方法,執行了上述定義的插入資料的 SQL 陳述式。在控制台輸出一條成功插入資料的訊息。
代碼如下:
String insertDataSql = "INSERT INTO test_springjdbc (id,name) VALUES (1,'A1'), (2,'A2'), (3,'A3')"; jdbcTemplate.update(insertDataSql); System.out.println("Insert data successfully.");更新資料。
定義一個 SQL 陳述式,用於更新資料庫表
test_springjdbc中id為1的記錄的name欄位的值為A11。通過
jdbcTemplate對象執行 SQL 陳述式,將更新操作應用於資料庫。在控制台輸出一條成功更新資料的訊息。
代碼如下:
String updateDataSql = "UPDATE test_springjdbc SET name = 'A11' WHERE id = 1"; jdbcTemplate.update(updateDataSql); System.out.println("Update data successfully.");刪除資料。
定義一個 SQL 陳述式,用於從資料庫表
test_springjdbc中刪除id為2的記錄。通過
jdbcTemplate對象執行 SQL 陳述式,將刪除操作應用於資料庫。在控制台輸出一條成功刪除資料的訊息。
代碼如下:
String deleteDataSql = "DELETE FROM test_springjdbc WHERE id = 2"; jdbcTemplate.update(deleteDataSql); System.out.println("Delete data successfully.");查詢資料。
定義查詢資料的 SQL 陳述式,SQL 陳述式中使用了
SELECT *來選擇所有列,從test_springjdbc表中查詢資料。執行查詢資料的SQL語句,
jdbcTemplate對象通過調用query方法,執行了上述定義的查詢資料的 SQL 陳述式,並接收一個回呼函數作為參數。回呼函數中的代碼使用
ResultSet對象(rs) 擷取查詢結果中的每一行資料,並進行處理。回呼函數使用getInt和getString方法從ResultSet對象中擷取id和name列的值,並將其列印到控制台。最後,回呼函數返回null。在控制台輸出一條成功查詢資料的訊息。
代碼如下:
String selectDataSql = "SELECT * FROM test_springjdbc"; jdbcTemplate.query(selectDataSql, (rs, rowNum) -> { int id = rs.getInt("id"); String name = rs.getString("name"); System.out.println("id: " + id + ", name: " + name); return null; }); System.out.println("Query data successfully.");刪除表。
定義一個 SQL 陳述式,用於刪除資料庫中的表
test_springjdbc。通過
jdbcTemplate對象執行 SQL 陳述式,將刪除表的操作應用於資料庫。輸出一條成功刪除表的訊息。
代碼如下:
String deleteTableSql = "DROP TABLE test_springjdbc"; jdbcTemplate.execute(deleteTableSql); System.out.println("Table drop successfully.");
完整的代碼展示
pom.xml
<?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>com.example</groupId>
<artifactId>spring-jdbc-mysql-client</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.40</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.0.RELEASE</version>
</dependency>
</dependencies>
</project>Main.java
package com.example;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
public class Main {
public static void main(String[] args) {
// Database Connect Information
String url = "jdbc:mysql://$host:$port/$database_name?useSSL=false";
String username = "$user_name";
String password = "$password";
// create data source
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
// Create a JdbcTemplate object
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
// Create table
String createTableSql = "CREATE TABLE test_springjdbc (id INT, name VARCHAR(20))";
jdbcTemplate.execute(createTableSql);
System.out.println("Create table successfully.");
// Insert data
String insertDataSql = "INSERT INTO test_springjdbc (id,name) VALUES (1,'A1'), (2,'A2'), (3,'A3')";
jdbcTemplate.update(insertDataSql);
System.out.println("Insert data successfully.");
// Update data
String updateDataSql = "UPDATE test_springjdbc SET name = 'A11' WHERE id = 1";
jdbcTemplate.update(updateDataSql);
System.out.println("Update data successfully.");
// Delete data
String deleteDataSql = "DELETE FROM test_springjdbc WHERE id = 2";
jdbcTemplate.update(deleteDataSql);
System.out.println("Delete data successfully.");
// Query data
String selectDataSql = "SELECT * FROM test_springjdbc";
jdbcTemplate.query(selectDataSql, (rs, rowNum) -> {
int id = rs.getInt("id");
String name = rs.getString("name");
System.out.println("id: " + id + ", name: " + name);
return null;
});
System.out.println("Query data successfully.");
// Delete table
String deleteTableSql = "DROP TABLE test_springjdbc";
jdbcTemplate.execute(deleteTableSql);
System.out.println("Table drop successfully.");
}
}
相關文檔
更多 MySQL Connector/J 的資訊,請參見 Overview of MySQL Connector/J。