JDBC是Java與數據庫交互的統一API.傳統的JDBC編程的操做步驟以下:html
ORM(Object-Relational-Mapping)對象關係映射,將JavaBean和數據庫對象進行相互的轉換。java
Hibernate、MyBatis、JPA、Spring JDBCgit
MyBatis的前身是iBATIS,是Clinton-Begin在2001年發起的一個開源項目,最初側重於密碼軟件的開發,後來發展成爲一款基於Java的持久層框架。2004年Clinton將iBATIS的名字和源碼捐贈給了Apache軟件基金會,接下來的6年中,開源軟件世界發生了巨大的變化, 一切開發實踐、基礎設施、許可,甚至數據庫技術都完全改變了。2010年核心開發團隊決定離開Apache軟件基金會,而且將iBATIS更名爲MyBatis。
MyBatis是一款優秀的支持自定義SQL查詢、存儲過程和高級映射的持久層框架,消除了幾乎全部的JDBC代碼和參數的手動設置以及結果集的檢索。MyBatis可使用XML或註解進行配置和映射,MyBatis經過將參數映射到配置的SQL造成最終執行的SQL 語句,最後將執行SQL的結果映射成Java對象返回。
與其餘的ORM(對象關係映射)框架不一樣,MyBatis並無將Java對象與數據庫表關聯起來,而是將Java方法與SQL語句關聯。MyBatis容許用戶充分利用數據庫的各類功能,例如存儲過程、視圖、各類複雜的查詢以及某數據庫的專有特性。若是要對遺留數據庫、不規範的數據庫進行操做,或者要徹底控制SQL的執行,MyBatis將會是一個不錯的選擇。
與JDBC相比,MyBatis簡化了相關代碼,SQL語句在一行代碼中就能執行。MyBatis提供了一個映射引擎,聲明式地將SQL語句的執行結果與對象樹映射起來。經過使用一種內建的類XML 表達式語言SQL 語句能夠被動態生成。 github
MyBatis總體分爲三層:基礎支持層、核心處理層、接口層 sql
具體的模塊,後面章節會深刻討論.SQL語句的執行涉及各個組件,其中比較重要的是Executor,StatementHandler,ParameterHandler和ResultSetHandler。
Executor主要負責一級緩存和二級緩存,並提供是事務管理的相關操做,它會將數據庫相關操做委託給StatementHandler完成,StatementHandler首先經過ParammeterHandler完成SQL的實參綁定,而後經過java.sql.Statement對象執行sql語句並獲得結果集ResultSet,最後經過ResultSetHandler完成結果集的映射,獲得對象並返回。以下圖所示: 數據庫
Mybatis系列文章內容來自一些大牛的網絡博客和Mybatis技術書籍,主要用於記錄、彙總和結合一些本身的想法。分享給你們一塊兒學習編程
失控的阿甘,樂於分享,記錄點滴緩存