1.概述
MyBatis是最近幾年非常流行的數據訪問層(DAO)框架,能夠簡單高效的實現對數據層訪問
2.Mybatis與JDBC和Hibernate的比較
2.1JDBC
java原生的關係型數據庫訪問方式
- 每次操作數據庫都需要獲取連接關閉連接,在大量訪問數據庫時,頻繁的開關連接消耗性能。
- 需要手動編寫sql,有學習成本
- 查詢出的結果需要手動進行封裝到bean
- 沒有緩存處理機制
- sql語句寫死在程序中,需要修改sql必須修改源文件
2.2Hibernate
基於面向對象理念設計的DAO層框架,基本理念就是維護對象到表的映射關係,通過操作對象操作表中的數據,從而可以減少甚至杜絕sql的使用
類 ------------------- 表
對象 表記錄傳統的數據庫處理方式,將對象和表記錄存在頻繁的轉換,很麻煩,於是人們想:如果將對象和表記錄先轉換好,封裝到Entity-實體,這樣就表示了它們之間的關係,以後操作對象就被翻譯成對錶的操作,那麼以後就不用關心表,只需要關心對象,程序中只要操作對象就能操作數據庫,從數據庫查詢的數據也會轉換爲對象,可以不用在寫sql----這就是衍生出來的hibernate 。但是hibernate 有很多缺陷,過於理想化)
缺點如下:
- 相對比較沉重,效率不好
- 當涉及到比較複雜的查詢時Hibernate的操作對象的方式用起來非常麻煩,甚至無法實現,只能用sql操作
- 底層需要頻繁的拼接sql,產生大量冗餘的sql
2.3MyBatis
是一種半自動對象-表映射關係的DAO層框架,可以自動的進行對象的封裝,但是sql仍然需要自己來寫。
結合了JDBC和Hibernate的優點,可以手寫sql靈活實現數據訪問,自動封裝數據,減少冗餘代碼
mybatis的結構如下: