
- Spring 核心基礎
- Spring - 首頁
- Spring - 概述
- Spring - 架構
- Spring - 環境設定
- Spring - Hello World 示例
- Spring - IoC 容器
- Spring - Bean 定義
- Spring - Bean 作用域
- Spring - Bean 生命週期
- Spring - Bean 後處理器
- Spring - Bean 定義繼承
- Spring - 依賴注入
- Spring - 注入內部 Bean
- Spring - 注入集合
- Spring - Bean 自動裝配
- 基於註解的配置
- Spring - 基於 Java 的配置
- Spring - Spring 中的事件處理
- Spring - Spring 中的自定義事件
- Spring - Spring 框架中的 AOP
- Spring - JDBC 框架
- Spring - 事務管理
- Spring - Web MVC 框架
- Spring - 使用 Log4J 進行日誌記錄
- Spring 問題與解答
- Spring - 問題與解答
- Spring 有用資源
- Spring - 快速指南
- Spring - 有用資源
- Spring - 討論
Spring - JDBC 框架概述
在使用普通的 JDBC 與資料庫互動時,編寫不必要的程式碼來處理異常、開啟和關閉資料庫連線等變得很麻煩。但是,Spring JDBC 框架負責所有底層細節,從開啟連線、準備和執行 SQL 語句、處理異常、處理事務,最後關閉連線。
因此,您需要做的只是定義連線引數,指定要執行的 SQL 語句,並在從資料庫獲取資料時為每次迭代執行所需的工作。
Spring JDBC 提供了幾種方法,以及相應不同的類來與資料庫互動。我將採用經典且最流行的方法,該方法使用框架的JdbcTemplate類。這是管理所有資料庫通訊和異常處理的核心框架類。
JdbcTemplate 類
JDBC Template 類執行 SQL 查詢、更新語句、儲存過程呼叫,對 ResultSet 進行迭代,並提取返回的引數值。它還會捕獲 JDBC 異常並將它們轉換為 org.springframework.dao 包中定義的通用、更具資訊量的異常層次結構。
JdbcTemplate 類的例項一旦配置後就是執行緒安全的。因此,您可以配置一個JdbcTemplate的單個例項,然後安全地將此共享引用注入到多個 DAO 中。
使用 JDBC Template 類時,一種常見做法是在 Spring 配置檔案中配置一個DataSource,然後將該共享 DataSource Bean 依賴注入到您的 DAO 類中,並且 JdbcTemplate 在 DataSource 的 setter 中建立。
配置資料來源
讓我們在我們的資料庫TEST中建立一個數據庫表Student。我們假設您正在使用 MySQL 資料庫,如果您使用任何其他資料庫,則可以相應地更改您的 DDL 和 SQL 查詢。
CREATE TABLE Student( ID INT NOT NULL AUTO_INCREMENT, NAME VARCHAR(20) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (ID) );
現在我們需要向 JDBC Template 提供一個 DataSource,以便它可以自行配置以獲取資料庫訪問許可權。您可以在 XML 檔案中使用如下程式碼片段配置 DataSource:
<bean id = "dataSource" class = "org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name = "driverClassName" value = "com.mysql.jdbc.Driver"/> <property name = "url" value = "jdbc:mysql://:3306/TEST"/> <property name = "username" value = "root"/> <property name = "password" value = "password"/> </bean>
資料訪問物件 (DAO)
DAO 代表資料訪問物件,通常用於資料庫互動。DAO 的存在是為了提供一種讀取和寫入資料庫資料的方法,並且它們應該透過一個介面公開此功能,應用程式的其餘部分將透過該介面訪問它們。
Spring 中的 DAO 支援使您可以以一致的方式輕鬆使用 JDBC、Hibernate、JPA 或 JDO 等資料訪問技術。
執行 SQL 語句
讓我們看看如何使用 SQL 和 JDBC Template 物件對資料庫表執行 CRUD(建立、讀取、更新和刪除)操作。
查詢整數
String SQL = "select count(*) from Student"; int rowCount = jdbcTemplateObject.queryForInt( SQL );
查詢長整數
String SQL = "select count(*) from Student"; long rowCount = jdbcTemplateObject.queryForLong( SQL );
使用繫結變數的簡單查詢
String SQL = "select age from Student where id = ?"; int age = jdbcTemplateObject.queryForInt(SQL, new Object[]{10});
查詢字串
String SQL = "select name from Student where id = ?"; String name = jdbcTemplateObject.queryForObject(SQL, new Object[]{10}, String.class);
查詢並返回物件
String SQL = "select * from Student where id = ?"; Student student = jdbcTemplateObject.queryForObject( SQL, new Object[]{10}, new StudentMapper()); public class StudentMapper implements RowMapper<Student> { public Student mapRow(ResultSet rs, int rowNum) throws SQLException { Student student = new Student(); student.setID(rs.getInt("id")); student.setName(rs.getString("name")); student.setAge(rs.getInt("age")); return student; } }
查詢並返回多個物件
String SQL = "select * from Student"; List<Student> students = jdbcTemplateObject.query( SQL, new StudentMapper()); public class StudentMapper implements RowMapper<Student> { public Student mapRow(ResultSet rs, int rowNum) throws SQLException { Student student = new Student(); student.setID(rs.getInt("id")); student.setName(rs.getString("name")); student.setAge(rs.getInt("age")); return student; } }
將一行插入表中
String SQL = "insert into Student (name, age) values (?, ?)"; jdbcTemplateObject.update( SQL, new Object[]{"Zara", 11} );
更新表中的一行
String SQL = "update Student set name = ? where id = ?"; jdbcTemplateObject.update( SQL, new Object[]{"Zara", 10} );
從表中刪除一行
String SQL = "delete Student where id = ?"; jdbcTemplateObject.update( SQL, new Object[]{20} );
執行 DDL 語句
您可以使用jdbcTemplate中的execute(..)方法執行任何 SQL 語句或 DDL 語句。以下是如何使用 CREATE 語句建立表的示例:
String SQL = "CREATE TABLE Student( " + "ID INT NOT NULL AUTO_INCREMENT, " + "NAME VARCHAR(20) NOT NULL, " + "AGE INT NOT NULL, " + "PRIMARY KEY (ID));" jdbcTemplateObject.execute( SQL );
Spring JDBC 框架示例
基於上述概念,讓我們檢查一些重要的示例,這些示例將幫助您瞭解在 Spring 中使用 JDBC 框架的方法:
序號 | 示例和說明 |
---|---|
1 | Spring JDBC 示例
此示例將說明如何編寫簡單的基於 JDBC 的 Spring 應用程式。 |
2 | Spring 中的 SQL 儲存過程
瞭解如何在 Spring 中使用 JDBC 呼叫 SQL 儲存過程。 |