以下內容引用自
在使用普通的jdbc運算元據庫時,就會很麻煩的寫很多不必要的**來處理異常,比如開啟和關閉資料庫連線等。但spring jdbc框架負責所有的低層細節,從開始開啟連線,準備和執行sql語句,處理異常,處理事務,到最後關閉連線。
所以當從資料庫中獲取資料時,你所做的是定義連線引數,指定要執行的sql語句,每次迭代完成所需的工作。
spring jdbc提供了幾種方法和相應的不同類與資料庫的介面。我將要採用jdbctemplate類的框架,它使用了最經典和最流行的方法。這是管理所有資料庫通訊和異常處理的中心框架類。
jdbctemplate類
jdbc模板類執行sql查詢,更新語句,儲存過程呼叫,在resultset上執行迭代,並提取返回的引數值。它還捕獲jdbc異常,並將它們轉換為org.springframework.dao包中定義的通用,更詳細的異常層次結構。
配置jdbctemplate類的例項是執行緒安全的。因此,您可以配置jdbctemplate的單個例項,然後將該共享引用安全地注入到多個dao中。
使用jdbc模板類時的常見做法是在spring配置檔案中配置datasource,然後將共享datasource bean的dependency-inject注入到dao類中,並在datasource的setter中建立jdbctemplate。
配置資料來源
使用mysql資料庫在test資料庫總建立student表,指令碼如下:
createtable
student(
id
intnot
null
auto_increment,
name
varchar(20) not
null
, age
intnot
null
,
primary
key(id)
);
現在我們需要向jdbc模板提供乙個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://localhost: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(建立,讀取,更新和刪除)操作。
查詢int型別
string sql = "select count(*) from student";int rowcount = jdbctemplateobject.queryforint( sql );
查詢long型別
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);
查詢字串
string sql = "select name from student where id = ?";string name = jdbctemplateobject.queryforobject(sql, new object, string.class);
查詢和返回乙個物件
string sql = "select * from student where id = ?";student student =jdbctemplateobject.queryforobject(sql,
new object, new
public
public student maprow(resultset rs, int rownum) throws
sqlexception
}
查詢並返回多個物件
string sql = "select * from student";list
students =jdbctemplateobject.query(sql,
newpublic
public student maprow(resultset rs, int rownum) throws
sqlexception
}
在表中插入一行
string sql = "insert into student (name, age) values (?, ?)";jdbctemplateobject.update( sql,
new object );
在表中更新一行
string sql = "update student set name = ? where id = ?";jdbctemplateobject.update( sql,
new object );
從表中刪除一行
string sql = "delete student where id = ?";jdbctemplateobject.update( sql,
new object );
執行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框架概述
spring 框架是乙個分層架構,由 7 個定義良好的模組組成。spring 模組構建在核心容器之上,核心容器定義了建立 配置和管理 bean 的方式,如圖 1 所示。圖1.spring框架的7個模組 組成 spring 框架的每個模組 或元件 都可以單獨存在,或者與其他乙個或多個模組聯合實現。每個...
Spring框架概述
spring 框架是乙個分層架構,由 7 個定義良好的模組組成。spring 模組構建在核心容器之上,核心容器定義了建立 配置和管理 bean 的方式,如圖 所示。組成 spring 框架的每個模組 或元件 都可以單獨存在,或者與其他乙個或多個模組聯合實現。每個模組的功能如下 spring 框架的功...
Spring框架的JDBC模板使用
1.spring框架中提供了很多持久層的模板類來簡化程式設計,使用模板類編寫程式會變的簡單 2.提供了jdbc模板,spring框架提供的 jdbctemplate類 3.spring框架可以整合hibernate框架,也提供了模板類 hibernatetemplate類 技術分析之演示jdbc的模...