新聞中心
JDBC 框架概述
在使用普通的 JDBC 數(shù)據(jù)庫時(shí),就會(huì)很麻煩的寫不必要的代碼來處理異常,打開和關(guān)閉數(shù)據(jù)庫連接等。但 Spring JDBC 框架負(fù)責(zé)所有的低層細(xì)節(jié),從開始打開連接,準(zhǔn)備和執(zhí)行 SQL 語句,處理異常,處理事務(wù),到最后關(guān)閉連接。

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序定制開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了富縣免費(fèi)建站歡迎大家使用!
所以當(dāng)從數(shù)據(jù)庫中獲取數(shù)據(jù)時(shí),你所做的是定義連接參數(shù),指定要執(zhí)行的 SQL 語句,每次迭代完成所需的工作。
Spring JDBC 提供幾種方法和數(shù)據(jù)庫中相應(yīng)的不同的類與接口。我將給出使用 JdbcTemplate 類框架的經(jīng)典和最受歡迎的方法。這是管理所有數(shù)據(jù)庫通信和異常處理的中央框架類。
JdbcTemplate 類
JdbcTemplate 類執(zhí)行 SQL 查詢、更新語句和存儲(chǔ)過程調(diào)用,執(zhí)行迭代結(jié)果集和提取返回參數(shù)值。它也捕獲 JDBC 異常并轉(zhuǎn)換它們到 org.springframework.dao 包中定義的通用類、更多的信息、異常層次結(jié)構(gòu)。
JdbcTemplate 類的實(shí)例是線程安全配置的。所以你可以配置 JdbcTemplate 的單個(gè)實(shí)例,然后將這個(gè)共享的引用安全地注入到多個(gè) DAOs 中。
使用 JdbcTemplate 類時(shí)常見的做法是在你的 Spring 配置文件中配置數(shù)據(jù)源,然后共享數(shù)據(jù)源 bean 依賴注入到 DAO 類中,并在數(shù)據(jù)源的設(shè)值函數(shù)中創(chuàng)建了 JdbcTemplate。
配置數(shù)據(jù)源
我們在數(shù)據(jù)庫 TEST 中創(chuàng)建一個(gè)數(shù)據(jù)庫表 Student。假設(shè)你正在使用 MySQL 數(shù)據(jù)庫,如果你使用其他數(shù)據(jù)庫,那么你可以改變你的 DDL 和相應(yīng)的 SQL 查詢。
CREATE TABLE Student(
ID INT NOT NULL AUTO_INCREMENT,
NAME VARCHAR(20) NOT NULL,
AGE INT NOT NULL,
PRIMARY KEY (ID)
);現(xiàn)在,我們需要提供一個(gè)數(shù)據(jù)源到 JdbcTemplate 中,所以它可以配置本身來獲得數(shù)據(jù)庫訪問。你可以在 XML 文件中配置數(shù)據(jù)源,其中一段代碼如下所示:
數(shù)據(jù)訪問對象(DAO)
DAO 代表常用的數(shù)據(jù)庫交互的數(shù)據(jù)訪問對象。DAOs 提供一種方法來讀取數(shù)據(jù)并將數(shù)據(jù)寫入到數(shù)據(jù)庫中,它們應(yīng)該通過一個(gè)接口顯示此功能,應(yīng)用程序的其余部分將訪問它們。
在 Spring 中,數(shù)據(jù)訪問對象(DAO)支持很容易用統(tǒng)一的方法使用數(shù)據(jù)訪問技術(shù),如 JDBC、Hibernate、JPA 或者 JDO。
執(zhí)行 SQL 語句
我們看看如何使用 SQL 和 jdbcTemplate 對象在數(shù)據(jù)庫表中執(zhí)行 CRUD(創(chuàng)建、讀取、更新和刪除)操作。
查詢一個(gè)整數(shù)類型:
String SQL = "select count(*) from Student";
int rowCount = jdbcTemplateObject.queryForInt( SQL );查詢一個(gè) long 類型:
String SQL = "select count(*) from Student";
long rowCount = jdbcTemplateObject.queryForLong( SQL );一個(gè)使用綁定變量的簡單查詢:
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);查詢并返回一個(gè)對象:
String SQL = "select * from Student where id = ?";
Student student = jdbcTemplateObject.queryForObject(SQL,
new Object[]{10}, new StudentMapper());
public class StudentMapper implements RowMapper {
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;
}
} 查詢并返回多個(gè)對象:
String SQL = "select * from Student";
List students = jdbcTemplateObject.query(SQL,
new StudentMapper());
public class StudentMapper implements RowMapper {
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} );
執(zhí)行 DDL 語句
你可以使用 jdbcTemplate 中的 execute(..) 方法來執(zhí)行任何 SQL 語句或 DDL 語句。下面是一個(gè)使用 CREATE 語句創(chuàng)建一個(gè)表的示例:
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 框架:
| 序號(hào) | 例子 & 描述 |
|---|---|
| 1 | Spring JDBC Example 這個(gè)例子將解釋如何編寫一個(gè)簡單的基于 Spring 應(yīng)用程序的 JDBC。 |
| 2 | SQL Stored Procedure in Spring 學(xué)習(xí)在使用 Spring 中的 JDBC 時(shí)如何調(diào)用 SQL 存儲(chǔ)過程。 |
新聞名稱:創(chuàng)新互聯(lián)Spring教程:SpringJDBC框架
本文鏈接:http://m.fisionsoft.com.cn/article/dphjieg.html


咨詢
建站咨詢
