2022-09-27
背景:?學(xué)習(xí)小傅哥的手寫mybatis?項(xiàng)目,在學(xué)習(xí)的過程中有所收獲,做筆記記錄一下。
學(xué)習(xí)的所得有以下兩個(gè)方面:
1.從整體設(shè)計(jì)來說,學(xué)習(xí)了mybatis?這樣的復(fù)雜項(xiàng)目他的設(shè)計(jì)思路,運(yùn)用了大量設(shè)計(jì)模式,做職責(zé)分離,程序解耦,服務(wù)分治處理,使得這個(gè)項(xiàng)目在整體上結(jié)構(gòu)很清晰,在后期維護(hù)和擴(kuò)展上有很多優(yōu)勢。
2.深入到代碼層面來說,學(xué)習(xí)了mybatis?的業(yè)務(wù)處理邏輯,明白了,在整體優(yōu)秀的框架下,億點(diǎn)點(diǎn)細(xì)節(jié)也是必不可少的,細(xì)節(jié)落實(shí)在每件需要處理的事情上。在代碼層面,我獲得了反射,代理,數(shù)據(jù)庫連接池,動(dòng)態(tài)上下文,等知識要點(diǎn)的深入了解,這些要點(diǎn)會(huì)在后期的筆記中一一呈現(xiàn)。
接下來我從整體視角來對這個(gè)項(xiàng)目做介紹和概述:
手寫mybatis?這個(gè)項(xiàng)目是mybatis的迷你縮小版,濃縮了mybatis?的核心功能,具體核心功能如下:
1.讀取xml?文件,其中包括配置文件,具體的mapper.xml
2.數(shù)據(jù)庫連接管理,其中包括數(shù)據(jù)庫池化技術(shù)
3.動(dòng)態(tài)代理,主要用來代理mapper?的接口文件,將其與mapper.xml?里的sql?一一對應(yīng)起來
4,反射對象,具體是將mapper.xml?里查詢的入?yún)ⅲ?和查詢后的結(jié)果集通過反射的方式包裝起來,作為一個(gè)結(jié)果集返回
5.動(dòng)態(tài)上下文,主要是用于動(dòng)態(tài)sql?的生成,生成之后,將其加入上下文之中,要用到直接調(diào)用
6.?整合到spring ,對象的生成托管到spring bean?容器里,以便與spring?項(xiàng)目相結(jié)合
這里借用小傅哥博客上的架構(gòu)圖,詳情

