特點:
- mybatis是一種持久層框架,也屬於ORM映射。前身是ibatis。
- 相比於hibernatehibernate為全自動化,配置文件書寫之后不需要書寫sql語句,但是欠缺靈活,很多時候需要優化;
- mybatis為半自動化,需要自己書寫sql語句,需要自己定義映射。增加了程序員的一些操作,但是帶來了設計上的靈活,並且也是支持hibernate的一些特性,如延遲加載,緩存和映射等;對數據庫的兼容性比hibernate差。移植性不好,但是可編寫靈活和高性能的sql語句。
簡單易學:本身就很小且簡單。沒有任何第三方依賴,最簡單安裝只要兩個jar文件+配置幾個sql映射文件易於學習,易於使用,通過文檔和源代碼,可以比較完全的掌握它的設計思路和實現。
靈活:mybatis不會對應用程序或者數據庫的現有設計強加任何影響。 sql寫在xml里,便於統一管理和優化。通過sql基本上可以實現我們不使用數據訪問框架可以實現的所有功能,或許更多。
解除sql與程序代碼的耦合:通過提供DAO層,將業務邏輯和數據訪問邏輯分離,使系統的設計更清晰,更易維護,更易單元測試。sql和代碼的分離,提高了可維護性。
提供映射標簽,支持對象與數據庫的ORM字段關系映射
提供對象關系映射標簽,支持對象關系組建維護
提供XML標簽,支持編寫動態sql。
優缺點:
1.sql語句與代碼分離,存放於xml配置文件中:
優點:便於維護管理,不用在java代碼中找這些語句;
缺點: JDBC方式可以用用打斷點的方式調試,但是Mybatis不能,需要通過log4j日志輸出日志信息幫助調試,然后在配置文件中修改。
2.用邏輯標簽控制動態SQL的拼接:
優點:用標簽代替編寫邏輯代碼;
缺點:拼接復雜SQL語句時,沒有代碼靈活,拼寫比較復雜。不要使用變通的手段來應對這種復雜的語句。
3.查詢的結果集與java對象自動映射:
優點:保證名稱相同,配置好映射關系即可自動映射或者,不配置映射關系,通過配置列名=字段名也可完成自動映射。
缺點:對開發人員所寫的SQL依賴很強。
4.編寫原聲SQL:
優點:接近JDBC,比較靈活。
缺點:對SQL語句依賴程度很高;並且屬於半自動,數據庫移植比較麻煩,比如mysql數據庫編程Oracle數據庫,部分的sql語句需要調整。
MyBatis框架適用場合:
MyBatis專注於SQL本身,是一個足夠靈活的DAO層解決方案。
對性能的要求很高,或者需求變化較多的項目,如互聯網項目,MyBatis將是不錯的選擇。