mybatis描述核心配置文件 basemapper實(shí)現(xiàn)原理?
basemapper實(shí)現(xiàn)原理?basmybatis流式查詢優(yōu)缺點(diǎn)??jī)?yōu)勢(shì)1.簡(jiǎn)單易學(xué)Mybatis本身很小很簡(jiǎn)單。沒有任何第三方依賴,最簡(jiǎn)單的安裝只需要兩個(gè)jar文件和幾個(gè)SQL映射文件,易學(xué)易用。通過
basemapper實(shí)現(xiàn)原理?
bas
mybatis流式查詢優(yōu)缺點(diǎn)?
優(yōu)勢(shì)
1.簡(jiǎn)單易學(xué)
Mybatis本身很小很簡(jiǎn)單。沒有任何第三方依賴,最簡(jiǎn)單的安裝只需要兩個(gè)jar文件和幾個(gè)SQL映射文件,易學(xué)易用。通過文檔和源代碼,我們可以充分掌握其設(shè)計(jì)思想和實(shí)現(xiàn)。
2.靈活性
Mybatis不會(huì)對(duì)應(yīng)用程序或數(shù)據(jù)庫的現(xiàn)有設(shè)計(jì)產(chǎn)生任何影響。SQL用XML編寫,便于統(tǒng)一管理和優(yōu)化。通過SQL,我們基本上可以實(shí)現(xiàn)所有不用數(shù)據(jù)訪問框架就能實(shí)現(xiàn)的功能,也許更多。
3.從程序代碼中分離SQL
通過提供DAL層,將業(yè)務(wù)邏輯和數(shù)據(jù)訪問邏輯分離,使得系統(tǒng)設(shè)計(jì)更加清晰,更易于維護(hù),更易于單元測(cè)試。SQL和代碼的分離提高了可維護(hù)性。
4.提供映射標(biāo)簽,支持對(duì)象和數(shù)據(jù)庫之間ORM字段關(guān)系的映射。
5.提供對(duì)象關(guān)系映射標(biāo)簽來支持對(duì)象關(guān)系的建立和維護(hù)。
6.提供XML標(biāo)簽,支持動(dòng)態(tài)SQL的編寫。
劣勢(shì)
1.寫SQL語句的時(shí)候工作量很大,尤其是有很多字段和關(guān)聯(lián)表的時(shí)候。
2.SQL語句依賴于數(shù)據(jù)庫,導(dǎo)致數(shù)據(jù)庫的可移植性差,所以數(shù)據(jù)庫無法被替換。
3.框架還是比較簡(jiǎn)單,功能還是缺失的。雖然簡(jiǎn)化了數(shù)據(jù)綁定代碼,但是整個(gè)底層數(shù)據(jù)庫查詢實(shí)際上都是自己寫的,工作量比較大,不容易適應(yīng)快速的數(shù)據(jù)庫修改。
4.二級(jí)緩存機(jī)制不好。
mybatis工作原理及流程?
1)讀取mybatis配置文件:mybatis-config.xml是MyBatis的全局配置文件,配置了MyBatis的運(yùn)行環(huán)境等信息,比如數(shù)據(jù)庫連接信息。
2)加載映射文件。映射文件是SQL映射文件,其中配置了操作數(shù)據(jù)庫的SQL語句,需要加載到MyBatis配置文件mybatis-config.xml中mybatis-config.xml文件可以加載多個(gè)映射文件,每個(gè)文件對(duì)應(yīng)數(shù)據(jù)庫中的一個(gè)表。
3)構(gòu)建會(huì)話工廠:通過MyBatis 等配置信息構(gòu)建會(huì)話工廠SqlSessionFactory。;環(huán)境。
4)創(chuàng)建會(huì)話對(duì)象:通過會(huì)話工廠創(chuàng)建SqlSession對(duì)象,該對(duì)象包含執(zhí)行SQL語句的所有方法。
5)Executor executor: MyBatis定義了一個(gè)Executor接口來操作數(shù)據(jù)庫,它會(huì)根據(jù)SqlSession傳遞的參數(shù)動(dòng)態(tài)生成要執(zhí)行的SQL語句,同時(shí)還負(fù)責(zé)維護(hù)查詢緩存。
6)MappedStatement對(duì)象:在Executor接口的執(zhí)行方法中有一個(gè)MappedStatement類型的參數(shù),封裝了映射信息,用于存儲(chǔ)要映射的SQL語句的id、參數(shù)等信息。
7)輸入?yún)?shù)映射:輸入?yún)?shù)類型可以是map、List等集合類型,也可以是基本數(shù)據(jù)類型和POJO類型。輸入?yún)?shù)映射過程類似于JDBC ;為preparedStatement對(duì)象設(shè)置參數(shù)的過程。
8)輸出結(jié)果映射:輸出結(jié)果類型可以是map、List等集合類型,也可以是基本數(shù)據(jù)類型和POJO類型。輸出結(jié)果的映射過程類似于JDBC ;結(jié)果集的解析過程。