JavaEE--Mybatis學習筆記(一)
阿新 • • 發佈:2018-07-22
一個數 border none 取出 bean 需要 table add 基金
一、簡介:
- 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的前身就是iBatis,iBatis本是由ClintonBegin開發,後來捐給Apache基金會,成立了iBatis開源項目。2010年5月該項目由Apahce基金會遷移到了GoogleCode,並且改名為MyBatis。盡管如此,它的包結構仍然為ibatis。
- 訪問網站
www.mybatis.org/
https://github.com/mybatis
- MyBatis是一個數據持久層(ORM)框架。把實體類和SQL語句之間建立了映射關系,是一種半自動化的ORM實現。
- 所有sql語句,全部定義在xml(建議)中。也可以通過註解的方式在接口上實現。這些映射文件稱之為mapper。
二、MyBatis的優點(與其他架構區別)
- MyBatis的優點:
- 基於SQL語法,簡單易學。
- 能了解底層組裝過程。
- SQL語句封裝在配置文件中,便於統一管理與維護,降低了程序的耦合度。
- 程序調試方便。
- 與傳統JDBC的比較
- 減少了61%的代碼量
- 最簡單的持久化框架
- 架構級性能增強
- SQL代碼從程序代碼中徹底分離,可重用
- 增強了項目中的分工
- 增強了移植性
- 與Hibernate的對比
- Mybatis 在XML文件中配置SQL語句,實現了SQL語句和代碼的分離,給程序的維護帶來了很大便利
MyBatis |
Hibernate |
是一個SQL語句映射的框架(工具) | 主流的ORM(對象關系映射)框架、提供了從POJO到數據庫表的全套映射機制 |
註重POJO/Map與SQL之間的映射關系。不會為程序員在運行期自動生成SQL | 會自動生成全套SQL語句。 |
自動化程度低、手工映射SQL,靈活程度高 | 因為自動化程度高、映射配置復雜,api也相對復雜,靈活性低. |
需要開發人員熟煉掌據SQL語句 | 開發人同不必關註SQL底層語句開發 |
三、Mybatis 體系結構
1.功能架構講解:
我們把Mybatis的功能架構分為三層:- API接口層:提供給外部使用的接口API,開發人員通過這些本地API來操縱數據庫。接口層一接收到調用請求就會調用數據處理層來完成具體的數據處理。
- 數據處理層:負責具體的SQL查找、SQL解析、SQL執行和執行結果映射處理等。它主要的目的是根據調用的請求完成一次數據庫操作。
- 基礎支撐層:負責最基礎的功能支撐,包括連接管理、事務管理、配置加載和緩存處理,這些都是共用的東西,將他們抽取出來作為最基礎的組件。為上層的數據處理層提供最基礎的支撐。
2.框架架構講解:
- 加載配置:配置來源於兩個地方,一處是配置文件,一處是Java代碼的註解,將SQL的配置信息加載成為一個 mybatis結構 個MappedStatement對象(包括了傳入參數映射配置、執行的SQL語句、結果映射配置),存儲在內存中。
- SQL解析:當API接口層接收到調用請求時,會接收到傳入SQL的ID和傳入對象(可以是Map、JavaBean或者基本數據類型),Mybatis會根據SQL的ID找到對應的MappedStatement,然後根據傳入參數對象對MappedStatement進行解析,解析後可以得到最終要執行的SQL語句和參數。
- SQL執行:將最終得到的SQL和參數拿到數據庫進行執行,得到操作數據庫的結果。
- 結果映射:將操作數據庫的結果按照映射的配置進行轉換,可以轉換成HashMap、JavaBean或者基本數據類型,並將最終結果返回。
四、Mybatis 工作原理
JavaEE--Mybatis學習筆記(一)