一、什么是mybatis?
MyBatis?是支持定制化?SQL、存儲過程以及高級映射的優秀的持久層框架。MyBatis?避免了幾乎所有的?JDBC?代碼和手工設置參數以及抽取結果集。MyBatis?使用簡單的?XML?或注解來配置和映射基本體,將接口和?Java?的?POJOs(Plain?Old?Java?Objects,普通的?Java對象)映射成數據庫中的記錄。
二、mybatis架構
看到Mybatis的框架圖,可以清晰的看到Mybatis的整體核心對象,我更喜歡用自己的圖來表達Mybatis的整個的執行流程。如下圖所示:
原理解析:MyBatis應用程序根據XML配置文件創建SqlSessionFactory,SqlSessionFactory在根據配置,配置來源于兩個地方,一處是配置文件,一處是Java代碼的注解,獲取一個SqlSession。SqlSession包含了執行sql所需要的所有方法,可以通過SqlSession實例直接運行映射的sql語句,完成對數據的增刪改查和事務提交等,用完之后關閉SqlSession。
三、缺點
1、編寫SQL語句時工作量很大,尤其是字段多、關聯表多時,更是如此。
2、SQL語句依賴于數據庫,導致數據庫移植性差,不能更換數據庫。
3、框架還是比較簡陋,功能尚有缺失,雖然簡化了數據綁定代碼,但是整個底層數據庫查詢實際還是要自己寫的,工作量也比較大,而且不太容易適應快速數據庫修改。
4、二級緩存機制不佳