MyBatis
MyBatis 本是apache的一個開源專案iBatis,
2010年這個專案由apache software foundation 遷移到了google code,並且改名為MyBatis 。2013年11月遷移到Github。
iBATIS一詞來源於“internet”和“abatis”的組合,是一個基於Java的持久層框架。iBATIS提供的持久層框架包括SQL Maps和Data Access Objects(DAO)
- MyBatis
- 2015年
- iBatis
- Github
目錄
背景介紹
編輯MyBatis 是支援普通 SQL查詢,儲存過程和高階對映的優秀持久層框架。MyBatis
消除了幾乎所有的JDBC程式碼和引數的手工設定以及結果集的檢索。MyBatis
使用簡單的 XML或註解用於配置和原始對映,將介面和 Java 的POJOs(Plain Old Java Objects,普通的 Java物件)對映成資料庫中的記錄。
每個MyBatis應用程式主要都是使用SqlSessionFactory例項的,一個SqlSessionFactory例項可以通過SqlSessionFactoryBuilder獲得。SqlSessionFactoryBuilder可以從一個xml配置檔案或者一個預定義的配置類的例項獲得。
用xml檔案構建SqlSessionFactory例項是非常簡單的事情。推薦在這個配置中使用類路徑資源(classpath resource),但你可以使用任何Reader例項,包括用檔案路徑或file://開頭的url建立的例項。MyBatis有一個實用類----Resources,它有很多方法,可以方便地從類路徑及其它位置載入資源。
總體流程
編輯(1)載入配置並初始化
觸發條件:載入配置檔案
處理過程:將SQL的配置資訊載入成為一個個MappedStatement物件(包括了傳入引數對映配置、執行的SQL語句、結果對映配置),儲存在記憶體中。
(2)接收呼叫請求
觸發條件:呼叫Mybatis提供的API
傳入引數:為SQL的ID和傳入引數物件
處理過程:將請求傳遞給下層的請求處理層進行處理。
(3)處理操作請求
觸發條件:API介面層傳遞請求過來
傳入引數:為SQL的ID和傳入引數物件
處理過程:
(A)根據SQL的ID查詢對應的MappedStatement物件。
(B)根據傳入引數物件解析MappedStatement物件,得到最終要執行的SQL和執行傳入引數。
(C)獲取資料庫連線,根據得到的最終SQL語句和執行傳入引數到資料庫執行,並得到執行結果。
(D)根據MappedStatement物件中的結果對映配置對得到的執行結果進行轉換處理,並得到最終的處理結果。
(E)釋放連線資源。
(4)返回處理結果將最終的處理結果返回。
功能架構
功能架構講解:
我們把Mybatis的功能架構分為三層:
(1)API介面層:提供給外部使用的介面API,開發人員通過這些本地API來操縱資料庫。介面層一接收到呼叫請求就會呼叫資料處理層來完成具體的資料處理。
(2)資料處理層:負責具體的SQL查詢、SQL解析、SQL執行和執行結果對映處理等。它主要的目的是根據呼叫的請求完成一次資料庫操作。
(3)基礎支撐層:負責最基礎的功能支撐,包括連線管理、事務管理、配置載入和快取處理,這些都是共用的東西,將他們抽取出來作為最基礎的元件。為上層的資料處理層提供最基礎的支撐。
框架架構
框架架構講解:
(1)載入配置:配置來源於兩個地方,一處是配置檔案,一處是Java程式碼的註解,將SQL的配置資訊載入成為一個
個MappedStatement物件(包括了傳入引數對映配置、執行的SQL語句、結果對映配置),儲存在記憶體中。(2)SQL解析:當API介面層接收到呼叫請求時,會接收到傳入SQL的ID和傳入物件(可以是Map、JavaBean或者基本資料型別),Mybatis會根據SQL的ID找到對應的MappedStatement,然後根據傳入引數物件對MappedStatement進行解析,解析後可以得到最終要執行的SQL語句和引數。
(3)SQL執行:將最終得到的SQL和引數拿到資料庫進行執行,得到運算元據庫的結果。
(4)結果對映:將運算元據庫的結果按照對映的配置進行轉換,可以轉換成HashMap、JavaBean或者基本資料型別,並將最終結果返回。
動態SQL
編輯MyBatis 最強大的特性之一就是它的動態語句功能。如果您以前有使用JDBC或者類似框架的經歷,您就會明白把SQL語句條件連線在一起是多麼的痛苦,要確保不能忘記空格或者不要在columns列後面省略一個逗號等。動態語句能夠完全解決掉這些痛苦。
儘管與動態SQL一起工作不是在開一個party,但是MyBatis確實能通過在任何對映SQL語句中使用強大的動態SQL來改進這些狀況。動態SQL元素對於任何使用過JSTL或者類似於XML之類的文字處理器的人來說,都是非常熟悉的。在上一版本中,需要了解和學習非常多的元素,但在MyBatis 3 中有了許多的改進,現在只剩下差不多二分之一的元素。MyBatis使用了基於強大的OGNL表示式來消除了大部分元素。
儘管與動態SQL一起工作不是在開一個party,但是MyBatis確實能通過在任何對映SQL語句中使用強大的動態SQL來改進這些狀況。動態SQL元素對於任何使用過JSTL或者類似於XML之類的文字處理器的人來說,都是非常熟悉的。在上一版本中,需要了解和學習非常多的元素,但在MyBatis 3 中有了許多的改進,現在只剩下差不多二分之一的元素。MyBatis使用了基於強大的OGNL表示式來消除了大部分元素。
相關文章
- MyBatis(二)MyBatis入門程式(MyBatis demo)MyBatis
- MyBatis——MyBatis開發流程MyBatis
- 【MyBatis】2:MyBatis簡介MyBatis
- MyBatis -01- 初識 MyBatis + MyBatis 環境搭建MyBatis
- MyBatis系列(一):MyBatis入門MyBatis
- MyBatis1:MyBatis入門MyBatis
- 「Mybatis系列」Mybatis高階應用MyBatis
- MyBatis基礎:MyBatis快取(5)MyBatis快取
- MyBatis基礎:MyBatis入門(1)MyBatis
- Mybatis基礎:Mybatis對映配置檔案,Mybatis核心配置檔案,Mybatis傳統方式開發MyBatis
- 「Mybatis系列」Mybatis開發方式和配置MyBatis
- MyBatis(十一):MyBatis架構流程淺析MyBatis架構
- mybatis的外掛:mybatis-generator(MBG)MyBatis
- 深入淺出MyBatis:MyBatis的所有配置MyBatis
- mybatis 學習--mybatis基本用法入門MyBatis
- MyBatis基礎:MyBatis動態SQL(3)MyBatisSQL
- Mybatis20_mybatis的多表操作8MyBatis
- MyBatis-08-Spring的MyBatis InterceptorMyBatisSpring
- MyBatis-05-MyBatis使用流程簡讀MyBatis
- MyBatis 配置MyBatis
- Mybatis框架MyBatis框架
- MyBatis-MyBatis
- mybatis generatorMyBatis
- MyBatis原理MyBatis
- mybatis CRUDMyBatis
- MyBatis學習 之 一、MyBatis簡介與配置MyBatis+Spring+MySqlMyBatisSpringMySql
- Mybatis技術內幕(1):Mybatis簡介MyBatis
- MyBatis(八):MyBatis外掛機制詳解MyBatis
- Mybatis初學建立一個MyBatis-HelloworldMyBatis
- Mybatis入門及第一個Mybatis程式MyBatis
- MyBatis加強(4)~mybatis 外掛開發MyBatis
- 深入淺出MyBatis:JDBC和MyBatis介紹MyBatisJDBC
- MyBatis3教程 - MyBatis Interceptor原始碼分析MyBatisS3原始碼
- MyBatis基礎:MyBatis關聯查詢(4)MyBatis
- MyBatis基礎:MyBatis資料基本操作(2)MyBatis
- 【MyBatis原始碼解析】MyBatis一二級快取MyBatis原始碼快取
- MyBatis學習 之 四、MyBatis配置檔案MyBatis
- spring 整合 mybatis 及mybatis 的 crud 操作SpringMyBatis