最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

controller?&?service?&?dao之間的關系及解讀

 更新時間:2026年04月10日 08:43:41   作者:二哈喇子!  
本文介紹了軟件開發(fā)中Controller、Service、Mapper和Entity層的概念及其關系,類比于餐廳工作流程解釋各層職責,Entity層定義數(shù)據(jù)結構,Service層處理業(yè)務邏輯,Mapper層與數(shù)據(jù)庫交互,Controller層接收用戶請求,同時提供了Eclipse和IDEA中自動生成方法的快捷操作說明

不要把所有代碼寫在同一個類里,要遵循單一原則,一個類只干一件事

后端各層級之間關系

提示:這里可以添加本文要記錄的大概內(nèi)容:

圖很重要

先用更通俗易懂的方式來解釋controller(控制器)、service(服務層)、mapper(數(shù)據(jù)訪問層)以及實體層之間的關系。

想象一下你去一家餐廳吃飯的情景:

Controller(控制器)

  • 相當于餐廳的服務員。服務員負責接收顧客的訂單(比如你要點什么菜),然后將這些信息傳遞給廚師(相當于服務層),同時也負責將做好的菜肴送回到顧客的餐桌上。在軟件開發(fā)中,controller主要負責接收用戶的請求,并將這些請求轉(zhuǎn)發(fā)給合適的業(yè)務邏輯處理層(service層)。

Service(服務層)

  • 相當于餐廳的廚師。廚師負責根據(jù)服務員帶來的訂單制作菜品。在軟件開發(fā)中,service層負責處理具體的業(yè)務邏輯,比如計算價格、處理復雜的業(yè)務流程等。service層會與數(shù)據(jù)庫進行交互,但它不直接操作數(shù)據(jù)庫,而是通過mapper層來進行。

Mapper(數(shù)據(jù)訪問層)

  • 相當于餐廳的廚房里專門負責烹飪的工作人員。這些工作人員根據(jù)廚師的要求,具體操作爐灶、冰箱等設備來完成菜品的制作。在軟件開發(fā)中,mapper層負責與數(shù)據(jù)庫進行交互,執(zhí)行SQL語句,獲取或更新數(shù)據(jù)。mapper通常與數(shù)據(jù)庫表緊密對應,負責將Java對象轉(zhuǎn)換為數(shù)據(jù)庫中的記錄,或?qū)?shù)據(jù)庫中的記錄轉(zhuǎn)換為Java對象。

實體層(Entity Layer)

  • 相當于餐廳的食材。食材是構成菜品的基礎。在軟件開發(fā)中,實體層是指那些用來表示業(yè)務領域概念的對象,比如用戶、訂單等。實體層定義了數(shù)據(jù)的基本結構和屬性,是系統(tǒng)中數(shù)據(jù)的抽象表示形式。

總結來說:

  • Controller接收用戶的請求,并將請求轉(zhuǎn)發(fā)給Service層處理。
  • Service層處理業(yè)務邏輯,并通過Mapper層與數(shù)據(jù)庫進行交互。
  • Mapper層負責執(zhí)行SQL語句,與數(shù)據(jù)庫打交道,獲取或更新數(shù)據(jù)。
  • 實體層定義了數(shù)據(jù)的基本結構,是系統(tǒng)中數(shù)據(jù)的抽象表示。

整個流程就像一個餐廳的工作流程一樣:顧客(前端用戶)下單(發(fā)送請求),服務員(Controller)將訂單交給廚師(Service),廚師準備食材(從數(shù)據(jù)庫獲取數(shù)據(jù)),并讓廚房工作人員(Mapper)烹飪菜品(執(zhí)行數(shù)據(jù)庫操作),最后將菜品送到顧客手中(返回響應給前端用戶)。

一、Model 數(shù)據(jù)庫實體層

model層也就是數(shù)據(jù)庫實體層,也被稱為entity層,Bean,pojo 或 po

一般數(shù)據(jù)庫一張表對應一個實體類,類屬性同表字段 一 一對應。

Model層是被封裝起來的,Service層和DAO層只負責訪問和操作Model層,不直接與Model層交互。

Model層也可以包括其他的數(shù)據(jù)模型、數(shù)據(jù)庫或文件系統(tǒng)等,以完成業(yè)務數(shù)據(jù)的存儲、訪問和操作。

model層就像是蛋糕的原材料,比如雞蛋、面粉、糖、牛奶等等。

是用來描述數(shù)據(jù)的,定義了數(shù)據(jù)的屬性和行為

比如一個User對象就可以包含用戶名、密碼、郵箱等屬性,也可以擁有登錄、注冊等行為。

實體層中一般會自動生成Getter、Setter、to String方法和構造方法

具體怎么生成放在了文章下面

二、Controller 業(yè)務控制層

controller層的功能為請求和響應控制。它不允許直接操作數(shù)據(jù)庫

主要負責接收前端用戶請求,并將請求轉(zhuǎn)發(fā)給相應的Service層進行處理,處理Service層返回的結果,并將結果響應給前端。

  • Controller層調(diào)用Service層,Service層調(diào)用DAO層,DAO層負責操作Model層,從而完成整個系統(tǒng)的業(yè)務與處理、數(shù)據(jù)訪問等功能
  • Controller層也可對客戶端提交的數(shù)據(jù)進行驗證和校驗,保證數(shù)據(jù)的合法性和正確性。
  • controller層是用來處理用戶請求的,通過它來控制和協(xié)調(diào)整個應用程序的運行流程,接受用戶輸入,調(diào)用相應的service層來處理業(yè)務邏輯,并將處理結果返回給客戶端。

比如可以通過UserController來處理和控制用戶請求,實現(xiàn)用戶登錄、注冊、修改信息等操作。

三、Service 業(yè)務邏輯層/服務層

所有的內(nèi)部的業(yè)務邏輯都會放在這里處理

Service層是整個系統(tǒng)的業(yè)務邏輯處理中心,負責對業(yè)務數(shù)據(jù)進行處理和計算,并將處理結果返回給Controller層。

此外,Service層也需要調(diào)用DAO層對數(shù)據(jù)進行訪問和操作,以完成業(yè)務邏輯處理。

通過規(guī)范對dao層提供的功能進行封裝和組裝,實現(xiàn)更加復雜的操作,比如可以實現(xiàn)對用戶進行注冊、登錄、修改信息等業(yè)務操作。

四、Dao 數(shù)據(jù)庫持久化層

dao層也被稱為mapper層,全稱是DataAccessObject數(shù)據(jù)訪問對象

DAO層是用來訪問數(shù)據(jù)庫的,負責執(zhí)行數(shù)據(jù)訪問和操作,包括對數(shù)據(jù)庫的訪問和操作、文件系統(tǒng)的存取等,就是和數(shù)據(jù)庫打交道的,與數(shù)據(jù)庫進行聯(lián)絡的一些任務都封裝在此,向數(shù)據(jù)庫發(fā)送 SQL語句,可以實現(xiàn)對數(shù)據(jù)庫的增刪改查操作

為Service層提供數(shù)據(jù)訪問的支持和服務。并隱藏了數(shù)據(jù)訪問的細節(jié),并提供了一組簡單易用的接口,方便Service層調(diào)用和使用。

DAO設計的總體規(guī)劃需要和設計的表,dao類一般也是和數(shù)據(jù)庫中的表對應,采用駝峰式命名:表名+Dao

五、View 視圖

  • 運行時展示界面,給系統(tǒng)的用戶查看,也就是前端
  • 視圖類要展示輸出語句
  • 獲得輸入數(shù)據(jù)

它可以返回HTML頁面、JSON等數(shù)據(jù)格式,處理表單數(shù)據(jù),進行一些計算或數(shù)據(jù)庫查詢操作等等

擴展

一般的,一個Controller對應一個Service,一個Service對應一個Dao,一個Dao對應一個數(shù)據(jù)庫表,

當然根據(jù)項目或業(yè)務復雜程度,一個Controller可以調(diào)用多個Service,而一個Service也可以調(diào)用多個Dao,但是Controller層不允許互調(diào),Service層也不允許互調(diào),

就是AController不能直接調(diào)用BController

AService也不能直接去調(diào)用BService,遵循高內(nèi)聚低耦合原則

本篇文章部分內(nèi)容借鑒了其他博主的文章,但我忘了哪篇文章了,在此十分感謝那篇原創(chuàng)文章的博主

實體類中快速添加自動生成方法

新建實體類后要有四個步驟:

1、手寫私有屬性,與表中列對應

2、自動生成兩個構造方法

3、自動生成Getter、Setter方法

4、自動生成重寫toString方法

Eclipse中快速添加構造方法

有參和無參構造方法

Eclipse中快速添加Getter、Setter方法

Eclipse中快速添加to String方法

IDEA中快速添加構造方法

此處借用網(wǎng)上經(jīng)典動圖展示:

IDEA中快速添加Getter、Setter方法

此處借用網(wǎng)上經(jīng)典動圖展示:

IDEA中快速添加to String方法

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Spring框架+jdbcTemplate實現(xiàn)增刪改查功能

    Spring框架+jdbcTemplate實現(xiàn)增刪改查功能

    這篇文章主要介紹了Spring框架+jdbcTemplate實現(xiàn)增刪改查功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • 關于Http持久連接和HttpClient連接池的深入理解

    關于Http持久連接和HttpClient連接池的深入理解

    眾所周知,httpclient是java開發(fā)中非常常見的一種訪問網(wǎng)絡資源的方式了,下面這篇文章主要給大家介紹了關于Http持久連接和HttpClient連接池的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧
    2018-05-05
  • Spring?Security?Oauth2整合JWT的詳細步驟和核心配置

    Spring?Security?Oauth2整合JWT的詳細步驟和核心配置

    這篇文章主要介紹了Spring?Security?Oauth2整合JWT的詳細步驟和核心配置,包括依賴引入、JWT工具類、OAuth2和資源服務器配置以及SpringSecurity配置,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-11-11
  • 基于Jenkins搭建.NET Core持續(xù)集成環(huán)境過程圖解

    基于Jenkins搭建.NET Core持續(xù)集成環(huán)境過程圖解

    這篇文章主要介紹了基于Jenkins搭建.NET Core持續(xù)集成環(huán)境過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • Java 非阻塞I/O使用方法

    Java 非阻塞I/O使用方法

    這篇文章主要介紹了Java 非阻塞I/O使用方法,文中涉及非阻塞I/O的簡介,同時向大家展示了利用非阻塞I/O實現(xiàn)客戶端的方法,需要的朋友可以參考下。
    2017-09-09
  • Springboot3自定義starter業(yè)務代碼

    Springboot3自定義starter業(yè)務代碼

    在Spring?Boot中,starter是一種特殊的依賴,它可以幫助開發(fā)人員快速引入和配置某個特定的功能模塊,這篇文章給大家介紹Springboot3自定義starter業(yè)務代碼的相關知識,感興趣的朋友跟隨小編一起看看吧
    2025-05-05
  • 詳解MyBatis resultType與resultMap中的幾種返回類型

    詳解MyBatis resultType與resultMap中的幾種返回類型

    本文主要介紹了MyBatis resultType與resultMap中的幾種返回類型,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • java 淺析代碼塊的由來及用法

    java 淺析代碼塊的由來及用法

    所謂代碼塊是指用"{}"括起來的一段代碼,根據(jù)其位置和聲明的不同,可以分為普通代碼塊、構造塊、靜態(tài)塊、和同步代碼塊。如果在代碼塊前加上 synchronized關鍵字,則此代碼塊就成為同步代碼塊
    2021-10-10
  • Java設計模式之java狀態(tài)模式詳解

    Java設計模式之java狀態(tài)模式詳解

    這篇文章主要介紹了Java設計模式之狀態(tài)模式定義與用法,結合具體實例形式詳細分析了Java狀態(tài)模式的概念、原理、定義及相關操作技巧,需要的朋友可以參考下
    2021-09-09
  • Java連接MySQL數(shù)據(jù)庫實例

    Java連接MySQL數(shù)據(jù)庫實例

    這篇文章介紹了Java連接MySQL數(shù)據(jù)庫實例的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04

最新評論

茌平县| 茶陵县| 涿州市| 漯河市| 屏东县| 莎车县| 通道| 杭锦旗| 敦化市| 西乌珠穆沁旗| 临泽县| 永吉县| 大城县| 青龙| 石嘴山市| 克拉玛依市| 海伦市| 翼城县| 衡水市| 靖西县| 明溪县| 伽师县| 大竹县| 阜宁县| 徐州市| 渭南市| 光山县| 庄浪县| 石台县| 岗巴县| 青川县| 卓资县| 舞钢市| 镇远县| 鄂托克旗| 恭城| 福州市| 榕江县| 沙田区| 北京市| 江阴市|