一、什么是mybatis挽封?
MyBatis?是支持定制化?SQL、存儲過程以及高級映射的優(yōu)秀的持久層框架臣镣。MyBatis?避免了幾乎所有的?JDBC?代碼和手工設(shè)置參數(shù)以及抽取結(jié)果集辅愿。MyBatis?使用簡單的?XML?或注解來配置和映射基本體,將接口和?Java?的?POJOs(Plain?Old?Java?Objects,普通的?Java對象)映射成數(shù)據(jù)庫中的記錄退疫。
二渠缕、mybatis架構(gòu)
看到Mybatis的框架圖,可以清晰的看到Mybatis的整體核心對象褒繁,我更喜歡用自己的圖來表達(dá)Mybatis的整個(gè)的執(zhí)行流程亦鳞。如下圖所示:
原理解析:MyBatis應(yīng)用程序根據(jù)XML配置文件創(chuàng)建SqlSessionFactory,SqlSessionFactory在根據(jù)配置棒坏,配置來源于兩個(gè)地方燕差,一處是配置文件,一處是Java代碼的注解坝冕,獲取一個(gè)SqlSession徒探。SqlSession包含了執(zhí)行sql所需要的所有方法,可以通過SqlSession實(shí)例直接運(yùn)行映射的sql語句喂窟,完成對數(shù)據(jù)的增刪改查和事務(wù)提交等测暗,用完之后關(guān)閉SqlSession。
三磨澡、缺點(diǎn)
1碗啄、編寫SQL語句時(shí)工作量很大,尤其是字段多稳摄、關(guān)聯(lián)表多時(shí)稚字,更是如此。
2、SQL語句依賴于數(shù)據(jù)庫胆描,導(dǎo)致數(shù)據(jù)庫移植性差瘫想,不能更換數(shù)據(jù)庫。
3昌讲、框架還是比較簡陋国夜,功能尚有缺失,雖然簡化了數(shù)據(jù)綁定代碼剧蚣,但是整個(gè)底層數(shù)據(jù)庫查詢實(shí)際還是要自己寫的支竹,工作量也比較大,而且不太容易適應(yīng)快速數(shù)據(jù)庫修改鸠按。
4礼搁、二級緩存機(jī)制不佳