關(guān)于MVC的dao層、service層和controller層詳解
MVC的dao層、service層和controller層
1、dao層
dao層主要做數(shù)據(jù)持久層的工作,負(fù)責(zé)與數(shù)據(jù)庫進(jìn)行聯(lián)絡(luò)的一些任務(wù)都封裝在此,dao層的設(shè)計首先是設(shè)計dao層的接口,然后在Spring的配置文件中定義此接口的實現(xiàn)類,然后就可以再模塊中調(diào)用此接口來進(jìn)行數(shù)據(jù)業(yè)務(wù)的處理,而不用關(guān)心此接口的具體實現(xiàn)類是哪個類,顯得結(jié)構(gòu)非常清晰,dao層的數(shù)據(jù)源配置,以及有關(guān)數(shù)據(jù)庫連接參數(shù)都在Spring配置文件中進(jìn)行配置。
2、service層
service層主要負(fù)責(zé)業(yè)務(wù)模塊的應(yīng)用邏輯應(yīng)用設(shè)計。同樣是首先設(shè)計接口,再設(shè)計其實現(xiàn)類,接著再Spring的配置文件中配置其實現(xiàn)的關(guān)聯(lián)。這樣我們就可以在應(yīng)用中調(diào)用service接口來進(jìn)行業(yè)務(wù)處理。service層的業(yè)務(wù)實,具體要調(diào)用已經(jīng)定義的dao層接口,封裝service層業(yè)務(wù)邏輯有利于通用的業(yè)務(wù)邏輯的獨(dú)立性和重復(fù)利用性。程序顯得非常簡潔。
3、controller層
controller層負(fù)責(zé)具體的業(yè)務(wù)模塊流程的控制,在此層要調(diào)用service層的接口來控制業(yè)務(wù)流程,控制的配置也同樣是在Spring的配置文件里進(jìn)行,針對具體的業(yè)務(wù)流程,會有不同的控制器。我們具體的設(shè)計過程可以將流程進(jìn)行抽象歸納,設(shè)計出可以重復(fù)利用的子單元流程模塊。這樣不僅使程序結(jié)構(gòu)變得清晰,也大大減少了代碼量。
4、view層
view層與控制層結(jié)合比較緊密,需要二者結(jié)合起來協(xié)同開發(fā)。view層主要負(fù)責(zé)前臺jsp頁面的顯示。
5、它們之間的關(guān)系
Service層是建立在DAO層之上的,建立了DAO層后才可以建立Service層,而Service層又是在Controller層之下的,因而Service層應(yīng)該既調(diào)用DAO層的接口,又要提供接口給Controller層的類來進(jìn)行調(diào)用,它剛好處于一個中間層的位置。每個模型都有一個Service接口,每個接口分別封裝各自的業(yè)務(wù)處理方法。
關(guān)于dao層/mapper層的一些筆記
1、BaseMapper
Mapper 繼承該接口后,無需編寫 mapper.xml 文件,即可獲得CRUD功能
Mybatis-Plus 是一款 Mybatis 動態(tài) SQL 自動注入 Mybatis 增刪改查 CRUD 操作中間件, 減少你的開發(fā)周期優(yōu)化動態(tài)維護(hù) XML 實體字段。
CRUD:增查改刪,即,create/read/update/delate 主要被用在描述軟件系統(tǒng)中數(shù)據(jù)庫或者持久層的基本操作功能
2、@mapper
使用接口注解的優(yōu)點(diǎn):
- 比較方便,快速編寫映射語句
使用接口注解的缺點(diǎn):
- 適用于比較簡單的配置,當(dāng)太復(fù)雜了接口就搞不定了。
- 不能使用動態(tài)SQL,有點(diǎn)雞肋。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
解析Java的Spring框架的BeanPostProcessor發(fā)布處理器
這篇文章主要介紹了Java的Spring框架的BeanPostProcessor發(fā)布處理器,Spring是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下2015-12-12SpringBoot2.x過后static下的靜態(tài)資源無法訪問的問題
這篇文章主要介紹了SpringBoot2.x過后static下的靜態(tài)資源無法訪問的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-01-01