概要java
MyBatis。是一個基於SQL映射支持Java和·NET的持久層框架。ORM映射框 Hibernate(一站式),Apache OJB(一站式)Mybatis(半自動)。MyBatis使用簡單的XML或註解用於配置和原始映射,將接口和Java的POJOs(Plan Old Java Objects,普通的Java對象)映射成數據庫中的記錄.程序員
相對 Hibernate 和 Apache OJB 等「一站式」ORM 解決方案而言,ibatis 是一種「半自動化」的 ORM 實現。所謂「半自動」 ,可能理解上有點生澀。縱觀目前主流的 ORM,不管 Hibernate 仍是Apache OJB,都對數據庫結構提供了較爲完整的封裝,提供了從 POJO 到數 據庫表的全套映射機制。 程序員每每只需定義好了 POJO 到數據庫表的映射關係, 便可經過 Hibernate或者 OJB 提供的方法完成持久層操做。程序員甚至不須要對 SQL 的熟練掌握,Hibernate/OJB 會根據制定的存儲邏輯,自動生成對應的 SQL 並調用 JDBC 接口加以執行。數據庫
大多數狀況下(特別是對新項目,新系統的開發而言) ,這樣的機制無往不利,大有一統天下的勢頭。可是,在一些特定的環境下,這種一站式的解決方案卻未必靈光。數組
在筆者的系統諮詢工做過程當中,經常遇到如下狀況:安全
1. 系統的部分或所有數據來自現有數據庫,處於安全考慮,只對開發團隊提供幾條 Select SQL(或存儲過程)以獲取所需數據,具體的表結構不予公開。session
2. 開發規範中要求,全部牽涉到業務邏輯部分的數據庫操做,必須在數據庫層由存儲過程實現(就筆者工做所面向的金融行業而言,工商銀行、中國銀行、交通銀行,都在開發規範中嚴格指定)mybatis
3. 系統數據處理量巨大,性能要求極爲苛刻,這每每意味着咱們必須經過通過高度優化的 SQL 語句(或存儲過程)才能達到系統性能設計指標。 直接使用 JDBC進行數據庫操做實際上也是不錯的選擇, 只是拖沓的數據庫訪問代碼, 乏味的字段讀取操做使人厭煩。app
全自動化POJO和數據之間的映射以及SQL語句的自動生成和執行,ibatis在於 POJO 與 SQL 之間的映射關係。 也就是說, ibatis並不會爲程序員在運行期自動生成 SQL 執行框架
ORM(Object Relational Mapping)工具
工具
5. 在java 對象和 數據庫之間有作mapping 的配置文件,也一般是xml 文件。
凡是使用ORM框架效率性能都會比JDBC差些。
二、與JDBC的區別
一、JDBC釋放資源的寫法很容易出錯,使用框架後這個問題就基本不存在了。即便用JDBC,通常也要封裝一個Util類來處理,如Srping的JDBC Template,不然每一個SQL語句外面包一大坨try/catch語句太麻煩了。
二、對於常見的多個選擇參數的查詢頁面,使用mybatis的標籤很容易處理多個參數組合使用的狀況,相比較寫JDBC的拼接字符串要容易。
三、若是項目中使用的是java的實體類,使用Mybatis能夠方便的實現數據庫行和對象的映射,手工寫JDBC的話這部分的代碼量會比較大,並且重複性很高。