mybatis原理分析 一 JDBC

2021-10-09 12:23:06 字數 2721 閱讀 3767

4. statement特點

使用過mybatis的都清楚底層封裝了jdbc的操作,將繁瑣的jdbc的操作給遮蔽了。所以分析mybatis的原理之前,先來看看jdbc是如何工作的,statement有哪些特點。

jdbc是由sun公司提出的一些列規範,只定義了介面規範,具體實現由各個資料庫廠商去實現,它是一種典型的橋接模式。

jdbc是一種規範,所謂規範,就是自己定義了標準介面,做了如下抽象:用connection代表和資料庫的連線,用statement執行sql,用resultset表示sql返回的結果。

上面說的connection、statement、resultset都應該是介面,具體實現由各個資料庫提供商提供。有了規範,可以通過統一的介面,訪問多種型別的資料庫,可隨便切換資料庫。

如下的測試**就是對jdbc的使用。

public

class

jdbctest

@after

public

void

over()

throws sqlexception

@test

public

void

jdbctest()

throws sqlexception

system.out.

println

("******************************=");

statement.

setstring(1

,"依依");

//重複使用這個statement 設定引數即可執行

statement.

execute()

; resultset = statement.

getresultset()

;while

(resultset.

next()

)// 釋放資源

resultset.

close()

; statement.

close()

;}}

3.1 獲取連線

介面的由各個廠商來提供,實現類的類名無法得到統一,去建立connection物件的時候,**就會寫死某個實現類。例如

connection con=

mysqlconnectionimpl

("127.0.0.1"

,3306

,"mybatis"

,username,pwd)

;

為了解決這個問題,抽象出了驅動的概念driver。driver是通過反射的機制來動態的建立連線。而不同的driver又交給drivermanager來管理。這樣可以在url中加上字首,來識別使用哪個資料庫的驅動來建立連線。例如

public

static

final string url =

"jdbc:mysql:"

;

這裡的字首中加了mysql。所以當執行

connection = drivermanager.

getconnection

(url, username, password)

;

drivermanager會根據字首獲得mysql的driver驅動來建立資料庫連線。

3.2 預編譯sql

有了資料庫連線後,通過如下的**可以預編譯sql得到乙個sql宣告。

preparedstatement statement = connection.

preparestatement

(sql)

;

可以一次編譯多次執行。sql語句一樣的時候,只需要設定引數就可以執行。

3.3 設定引數

第乙個引數是索引,表示第幾個』?'佔位符,從1開始 並不是從0開始。

有多個佔位符,則需要執行多次這條語句。

statement.

setstring(1

,"森林"

);

3.4 執行

執行sql,返回結果是個boolean型別。執行的結果集放在了statement當中

statement.

execute()

;

也可以使用executequery(),或者executeupdate()。

兩者的區別在於executequery只能執行查詢操作。

executeupdate執行增刪改操作。

3.5 獲取結果集

執行完execute操作後,會將執行結果儲存在statement中。通過getresultset可以獲得執行的結果。

resultset resultset = statement.

getresultset()

;

4.1 普通statment

最基本的功能是執行靜態的sql語句。

傳輸相關的功能,可以執行批處理和設定資料庫返回的行數。

4.2 preparedstatement

預處理sql語句,可以一次編譯多次執行。只需要設定引數就可以執行。第乙個jdbc使用的例子中已經體現了這一點。

還有乙個更重要的優點,就是防止sql注入

4.3 callablestatement

這是乙個和儲存過程相關的statement

Mybatis工作原理分析(一)

當我們在使用mybatis時,我們通常會和spring一起使用,就會使用以下配置方式,從而使用mybatis mybatis框架 在單獨使用mybatis時,原始碼進行分析 1 mybatis將配置檔案儲存到configuration物件中,作用是將配置檔案載入到記憶體中,加快配置檔案的讀取速度 i...

MyBatis原理分析

參考部落格 深入理解mybatis原理 一 jdbc的工作流程 載入資料庫的驅動程式 建立資料連線物件 建立statement物件 執行sql語句 處理返回結果集 關閉資料庫連線 二 mybatis和資料庫互動的方式 1 使用傳統的mybatis提供的api 此方式建立乙個sqlsession物件,...

MyBatis原理分析

參考部落格 深入理解mybatis原理 一 jdbc的工作流程 載入資料庫的驅動程式 建立資料連線物件 建立statement物件 執行sql語句 處理返回結果集 關閉資料庫連線 二 mybatis和資料庫互動的方式 1 使用傳統的mybatis提供的api 此方式建立乙個sqlsession物件,...