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物件,...