實戰(zhàn)講解MybatisPlus DO PO BO DTO VO 數(shù)據(jù)模型及其流轉(zhuǎn) 附視頻

一、序言

在使用MybatisPlus作為DAO層訪問數(shù)據(jù)庫日益普及的今天,相應(yīng)數(shù)據(jù)模型的理解變得越發(fā)的重要。如何應(yīng)對企業(yè)級復(fù)雜多變的場景、如何將代碼書寫的更為整潔,這些都是廣大技術(shù)朋友需要思考的問題。

本文將從實戰(zhàn)的角度帶來基于MybatisPlus作為DAO層訪問數(shù)據(jù)庫的前提下,解釋各種數(shù)據(jù)模型的內(nèi)涵以及數(shù)據(jù)模型之間的流轉(zhuǎn)問題。本文有視頻版,傳送門

紙上得來終覺淺,深刻理解各種概念的內(nèi)涵只有通過實戰(zhàn)編碼,才能理解其概念的內(nèi)涵。

二、概念

1、DO

DO稱為領(lǐng)域模型(Domain Object),此模型中字段屬性與數(shù)據(jù)庫字段具有某種一一對應(yīng)的聯(lián)系,一個不多一個不少,目的是屏蔽數(shù)據(jù)庫,透明的進(jìn)行數(shù)據(jù)庫編程。

上述一一對應(yīng)的聯(lián)系通常是指下劃線轉(zhuǎn)駝峰等。

DO是使用MybatisPlus最為重要的數(shù)據(jù)模型,此模型甚至不需要顯示的表明便能輕易的識別。

2、PO

一般來講,在做數(shù)據(jù)加工的過程中,單個DO的屬性過多,實際上用不上那么多屬性,此時需要一個模型來做中間橋接工作。PO便應(yīng)運(yùn)而生,也是POJO大家庭的一部分。PO可繼承DO,也可以僅包含DO中部分屬性。

PO能夠完成數(shù)據(jù)字段屬性過濾的操作。

3、BO

如果PO在處理多個DO時,情況比較復(fù)雜,那么可引入BO輔助完成上述操作。

4、VO

VO稱之為視圖對象(View Object),一般來說是指控制器返回給前端的最終的模型。不管是顯示的指明,還是隱士的返回,從控制器返回的實體模型均可理解為VO,與實體類命名無關(guān)。

5、DTO

DTO成為數(shù)據(jù)傳輸模型,顧名思義,是作為傳輸數(shù)據(jù)使用的。DTO廣泛應(yīng)用于子系統(tǒng)與子系統(tǒng)之間,不直接返回給前端,DTO與VO的根本區(qū)別是VO是單向的,由控制器返回給前端即可;DTO是雙向的,既要能夠轉(zhuǎn)化為JSON數(shù)據(jù),還要能夠解析為具體的DTO實體。

還有一種解釋是DTO作為控制器接收參數(shù)的實體,著實令人費(fèi)解:第一,API接口本著小而輕的原則,接口不會太復(fù)雜,因此使用普通參數(shù)或者借助DO完全能夠滿足大多數(shù)需求。

少數(shù)重量提交接口,特殊問題特殊處理。

如果是為了參數(shù)隱藏而在控制器接收參數(shù)使用DTO,不在討論范圍之內(nèi)。

在分析實體類數(shù)據(jù)模型流轉(zhuǎn)問題,一定要考慮少數(shù)情況與多數(shù)情況的問題,這也是理論與實戰(zhàn)的本質(zhì)差別。類似于DDD,將系統(tǒng)拆分過細(xì),看起來架構(gòu)很清楚,實則增加開發(fā)難度。

三、小結(jié)

實際開發(fā)中,概念是死的,編程是活的。引入分層模型本質(zhì)上是為了使數(shù)據(jù)才加工過程中層次清晰,方便代碼復(fù)用,切不可為了分層而分層,一定要有實際內(nèi)涵。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容