無規(guī)矩不成方圓寂恬,無規(guī)范不能協(xié)作
分層參數(shù)傳遞及命名流程
- dao層是數(shù)據(jù)層莱没,直接進(jìn)行數(shù)據(jù)庫的讀寫操作,返回?cái)?shù)據(jù)對(duì)象DO牙咏,DO與數(shù)據(jù)庫表一一對(duì)應(yīng)属铁。
- service層為業(yè)務(wù)層,用來實(shí)現(xiàn)業(yè)務(wù)邏輯焦蘑。能調(diào)用dao層或者service層盒发,返回?cái)?shù)據(jù)對(duì)象DO或者業(yè)務(wù)對(duì)象BO,BO通常由DO轉(zhuǎn)化拼卵、整合而來蛮艰,可以包含多個(gè)DO的屬性,也可以是只包含一個(gè)DO的部分屬性壤蚜。通常為了簡(jiǎn)便,如果無需轉(zhuǎn)化聪富,service也可以直接返回DO著蟹。外部調(diào)用(HTTP梢莽、RPC)方法也在這一層奸披,對(duì)于外部調(diào)用來說,service一般會(huì)將外部調(diào)用返回的DTO轉(zhuǎn)化為BO轻局。
- controller層為控制層嗽交,主要處理外部請(qǐng)求。調(diào)用service層,將service層返回的BO/DO轉(zhuǎn)化為DTO/VO并封裝成統(tǒng)一返回對(duì)象返回給調(diào)用方邑茄。如果返回?cái)?shù)據(jù)用于前端模版渲染則返回VO授帕,否則一般返回DTO。不論是DTO還是VO彤路,一般都會(huì)對(duì)BO/DO中的數(shù)據(jù)進(jìn)行一些轉(zhuǎn)化和整合洲尊,比如將gender屬性中的0轉(zhuǎn)化“男”奈偏,1轉(zhuǎn)化為“女”等姆吭。
職責(zé)要明確
controller層職責(zé)
1.參數(shù)校驗(yàn)
2.調(diào)用service層接口實(shí)現(xiàn)業(yè)務(wù)邏輯
3.轉(zhuǎn)換業(yè)務(wù)/數(shù)據(jù)對(duì)象
4.組裝返回對(duì)象
5.異常處理
service層職責(zé)
1.接收Controller層數(shù)據(jù)
2.與DAO層交互昆淡,處理業(yè)務(wù)邏輯
3.生成DTO數(shù)據(jù)并返回Controller層
dao層職責(zé)
1.數(shù)據(jù)庫讀寫
2.向service層返回基本類型或DO
3.避免加入業(yè)務(wù)邏輯
參考阿里代碼規(guī)范:阿里代碼規(guī)范