Spring的JDBC框架概述

2021-09-20 11:51:52 字數 3908 閱讀 6041

以下內容引用自

在使用普通的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表,指令碼如下:

create

table

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的模...