[圖解]企業應用架構模式2024新譯本講解26-層超類型2

1
00:00:00,510 --> 00:00:03,030
這個時候,如果再次查找所有人員

2
00:00:03,040 --> 00:00:03,750
我們會發現

3
00:00:05,010 --> 00:00:06,370
這一次所有的對象

4
00:00:06,740 --> 00:00:08,690
都是來自標識映射的

5
00:00:10,540 --> 00:00:13,390
就不需要再把數據庫里面的

6
00:00:13,770 --> 00:00:16,610
加載到標識映射

7
00:00:16,620 --> 00:00:17,890
因為所有的都在里面

8
00:00:19,250 --> 00:00:20,120
我們來看一下

9
00:00:22,200 --> 00:00:23,320
這個是一樣的

10
00:00:25,220 --> 00:00:32,040
這個地方跟之前一樣

11
00:00:34,270 --> 00:00:36,830
但是這里面還是要查詢一下

12
00:00:38,200 --> 00:00:39,990
案例就這樣寫的,沒辦法

13
00:00:54,060 --> 00:00:55,870
在這里,這個地方

14
00:00:56,680 --> 00:01:02,140
這時候,根據ID來判斷這個的時候

15
00:01:04,430 --> 00:01:05,100
都在里面

16
00:01:05,350 --> 00:01:11,300
也就是說所有的都是走這里的

17
00:01:11,310 --> 00:01:12,580
下面這個就不用了

18
00:01:13,540 --> 00:01:16,510
到這里都是走這個地方

19
00:01:18,060 --> 00:01:19,130
直接返回了

20
00:01:20,630 --> 00:01:21,740
每一個都是這樣

21
00:01:22,890 --> 00:01:25,970
你看,這里也是,都是直接走這里

22
00:01:26,680 --> 00:01:27,630
直接返回

23
00:01:34,220 --> 00:01:36,260
一共幾條

24
00:01:36,350 --> 00:01:37,260
4條

25
00:01:38,340 --> 00:01:42,780
每一條,1234,你看都是直接返回

26
00:01:52,850 --> 00:01:53,640
下面是一樣的

27
00:01:53,730 --> 00:01:55,680
把它輸出出來,一樣的

1
00:00:00,750 --> 00:00:08,900
接下來,我們再來看更新,我們一步步往下走

2
00:00:09,400 --> 00:00:13,040
比如說,更新ID為1人員的屬性值

3
00:00:13,640 --> 00:00:15,800
首先通過mapper

4
00:00:17,450 --> 00:00:21,570
調用find操作

5
00:00:21,860 --> 00:00:23,170
把1找出來

6
00:00:24,060 --> 00:00:26,050
我們看find操作

7
00:00:31,500 --> 00:00:32,460
這個操作

8
00:00:33,980 --> 00:00:37,800
它實際上是實現了

9
00:00:37,810 --> 00:00:39,200
PersonFinder接口

10
00:00:41,970 --> 00:00:45,800
里面定義的find方法

11
00:00:47,180 --> 00:00:47,690


12
00:00:51,560 --> 00:00:52,680
然后在這里面

13
00:00:52,970 --> 00:01:00,050
它又調用了超類定義的

14
00:01:00,770 --> 00:01:04,250
AbstractFind方法

15
00:01:05,650 --> 00:01:08,200
因為這里面,對查找來說

16
00:01:08,210 --> 00:01:11,120
對所有的根據ID查找

17
00:01:11,130 --> 00:01:13,960
對所有的領域對象一樣

18
00:01:13,970 --> 00:01:16,800
你不管是Person也好

19
00:01:16,810 --> 00:01:17,880
Order也好

20
00:01:17,890 --> 00:01:20,760
都是ID,回來一個對象

21
00:01:23,190 --> 00:01:24,370
沒有什么區別

22
00:01:25,860 --> 00:01:28,520
所以這個地方

23
00:01:29,310 --> 00:01:30,390
它直接調用

24
00:01:32,580 --> 00:01:33,180
抽象類

25
00:01:34,030 --> 00:01:35,540
就是層超類型的

26
00:01:35,550 --> 00:01:39,100
頂上的超類就可以了

27
00:01:39,670 --> 00:01:42,740
然后把它變成Person返回

28
00:01:43,250 --> 00:01:45,920
我們來看AbstractFind

29
00:01:48,710 --> 00:01:49,960
這是在這里定義的

30
00:01:52,610 --> 00:01:55,410
在抽象的映射器里面定義的

31
00:01:58,190 --> 00:02:01,110
ID進來,返回的是一個領域對象

32
00:02:01,950 --> 00:02:02,540
DomainObject

33
00:02:02,990 --> 00:02:06,390
也就是Person上面的超類

34
00:02:06,480 --> 00:02:07,870
最頂上超類

35
00:02:09,600 --> 00:02:10,430
我們看第一個

36
00:02:10,440 --> 00:02:14,180
直接調用了

37
00:02:14,190 --> 00:02:16,860
loadedmap的操作

38
00:02:17,070 --> 00:02:18,820
TryGetValue操作

39
00:02:20,110 --> 00:02:21,710
這個操作就一步到位

40
00:02:21,840 --> 00:02:22,790
給你個ID

41
00:02:23,790 --> 00:02:27,750
然后有就直接把它輸出到DomainObject

42
00:02:30,740 --> 00:02:34,020
這里的輸出參數這里來了

43
00:02:37,260 --> 00:02:38,730
顯然我們這是有的

44
00:02:39,130 --> 00:02:44,420
我們有的,因為前面我們經過了加載

45
00:02:44,430 --> 00:02:45,340
插入

46
00:02:45,350 --> 00:02:46,380
肯定是有的了

47
00:02:47,040 --> 00:02:49,080
肯定能找到,如果找到,就返回

48
00:02:49,090 --> 00:02:52,110
肯定能找到,能找到

49
00:02:53,320 --> 00:02:54,000
返回

50
00:02:55,020 --> 00:02:56,140
如果找不到

51
00:02:56,150 --> 00:02:58,860
再從數據庫加載,跟前面一樣

52
00:03:00,000 --> 00:03:03,600
下面這個沒有走了,像前面一樣

53
00:03:07,240 --> 00:03:15,260
好,找到了,得到人員的對象

54
00:03:15,990 --> 00:03:19,380
得到了,然后就修改屬性值

55
00:03:21,010 --> 00:03:22,720
名,賦值為Jack

56
00:03:23,650 --> 00:03:25,120
然后通過mapper的

57
00:03:26,740 --> 00:03:31,340
update操作更新

58
00:03:34,300 --> 00:03:34,700
對象

59
00:03:34,950 --> 00:03:39,900
把這個對象的屬性值更新到數據庫里面去

60
00:03:40,360 --> 00:03:44,510
這里調用了這個,這個update

61
00:03:44,520 --> 00:03:48,920
跟前面的入口是一樣的

62
00:03:49,170 --> 00:03:51,440
因為這里面沒有做抽象

63
00:03:51,450 --> 00:03:57,040
你看,我們前面查找和插入

64
00:03:57,630 --> 00:03:59,050
這兩個都

65
00:03:59,060 --> 00:04:02,760
要么是在這里定義了查找

66
00:04:02,770 --> 00:04:12,220
要么是在這里定義了插入

67
00:04:15,110 --> 00:04:16,130
包括插入

68
00:04:17,230 --> 00:04:19,510
加載都被抽象出來了

69
00:04:19,830 --> 00:04:21,730
但是在這個示例里面

70
00:04:22,880 --> 00:04:24,740
包括書里面它也沒有

71
00:04:25,230 --> 00:04:27,720
因為這個示例就復刻書上

72
00:04:28,030 --> 00:04:29,220
代碼片段

73
00:04:29,790 --> 00:04:31,200
它也沒有把這個提煉出來

74
00:04:31,290 --> 00:04:32,440
可能是要對比一下

75
00:04:32,450 --> 00:04:34,200
實際上要提煉也是可以提煉的

76
00:04:35,790 --> 00:04:39,360
因為你插入更新,一回事

77
00:04:40,330 --> 00:04:45,570
無非是構造一個,跟insert一樣

78
00:04:45,700 --> 00:04:50,160
通過這個方法來構造SQL語句

79
00:04:50,170 --> 00:04:52,640
還有參數的集合

80
00:04:55,140 --> 00:04:56,650
這里是用硬編碼的形式

81
00:04:57,590 --> 00:05:00,850
創建連接,打開連接,一樣的

82
00:05:00,860 --> 00:05:07,240
然后,你看這個一個常量

83
00:05:07,760 --> 00:05:10,320
這里直接就用硬編碼了

84
00:05:11,620 --> 00:05:14,810
然后一個一個添加參數一樣的

85
00:05:15,350 --> 00:05:20,810
然后執行,我們就跳過去了

86
00:05:26,200 --> 00:05:33,560
這是更新人員的名

87
00:05:34,800 --> 00:05:36,630
這個更新還是比較簡單的

88
00:05:38,560 --> 00:05:40,070
該有的知識點我們前面

89
00:05:40,080 --> 00:05:42,070
也都大多說過了

90
00:05:42,320 --> 00:05:43,470
所以比較簡單

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/44961.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/44961.shtml
英文地址,請注明出處:http://en.pswp.cn/web/44961.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

VB 上位機開發

VB 上位機開發第一節 在 VB(Visual Basic)上位機開發的第一節課程中涵蓋以下基礎內容: 一、上位機開發簡介 解釋上位機的概念和作用,它是與硬件設備進行通信和控制的軟件應用程序。舉例說明上位機在工業自動化、智能家居、監控系統等領域的應用。二、VB 開發環境介紹 展示如…

2024遼寧省數學建模C題【改性生物碳對水中洛克沙胂和砷離子的吸附】原創論文分享

大家好呀,從發布賽題一直到現在,總算完成了2024 年遼寧省大學數學建模競賽C題改性生物碳對水中洛克沙胂和砷離子的吸附完整的成品論文。 本論文可以保證原創,保證高質量。絕不是隨便引用一大堆模型和代碼復制粘貼進來完全沒有應用糊弄人的垃…

Rubber Duck Debugging: History and Benefits 橡皮鴨調試:歷史和優勢

注:機翻,未校對。 Discover the origins of rubber duck debugging, why it works, and why it has become so popular among programmers. 了解橡皮鴨調試的起源,它為什么有效,以及為什么它在程序員中如此受歡迎。 Debugging co…

AMD CPU加 vega 顯卡運行ollama本地大模型

顯卡是VEGA56,這個卡代號是gfx900 雖然ollama頁面上寫著這個卡可以,但是實際是不可以的 報錯如下: levelWARN sourceamd_windows.go:97 msg"amdgpu is not supported" gpu0 gpu_typegfx900:xnack 它認為的GPU型號是 gfx900:xna…

【JavaScript】解決 JavaScript 語言報錯:Uncaught SyntaxError: Unexpected identifier

文章目錄 一、背景介紹常見場景 二、報錯信息解析三、常見原因分析1. 缺少必要的標點符號2. 使用了不正確的標識符3. 關鍵詞拼寫錯誤4. 變量名與保留字沖突 四、解決方案與預防措施1. 檢查和添加必要的標點符號2. 使用正確的標識符3. 檢查關鍵詞拼寫4. 避免使用保留字作為變量名…

全棧 Discord 克隆:Next.js 13、React、Socket.io、Prisma、Tailwind、MySQL筆記(一)

前言 閱讀本文你需要有 Next.js 基礎 React 基礎 Prisma 基礎 tailwind 基礎 MySql基礎 準備工作 打開網站 https://ui.shadcn.com/docs 這不是一個組件庫。它是可重用組件的集合,您可以將其復制并粘貼到應用中。 打開installation 選擇Next.js 也就是此頁面…

Python3 第十七課 -- 編程第一步

目錄 一. 前言 二. end 關鍵字 一. 前言 在前面的教程中我們已經學習了一些 Python3 的基本語法知識,接下來我們來嘗試一些實例。 打印字符串: print("Hello, world!") 輸出結果為: Hello, world! 輸出變量值: i 256*256…

智慧校園服務監控功能

智慧校園系統中的服務監控功能,扮演著維護整個校園數字化生態系統穩定與高效運作的重要角色。它如同一位全天候的守護者,通過實時跟蹤、分析并響應系統各層面的運行狀況,確保教學、管理等核心業務流程的順暢進行。 服務監控功能覆蓋了智慧校園…

開發個人Ollama-Chat--6 OpenUI

開發個人Ollama-Chat–6 OpenUI Open-webui Open WebUI 是一種可擴展、功能豐富且用戶友好的自托管 WebUI,旨在完全離線運行。它支持各種 LLM 運行器,包括 Ollama 和 OpenAI 兼容的 API。 功能 由于總所周知的原由,OpenAI 的接口需要密鑰才…

知識圖譜與 LLM:微調與檢索增強生成

Midjourney 的知識圖譜聊天機器人的想法。 大型語言模型 (LLM) 的第一波炒作來自 ChatGPT 和類似的基于網絡的聊天機器人,這些模型在理解和生成文本方面非常出色,這讓人們(包括我自己)感到震驚。 我們中的許多人登錄并測試了它寫…

微信視頻號的視頻怎么下載到本地?快速教你下載視頻號視頻

天來說說市面上常見的微信視頻號視頻下載工具,教大家快速下載視頻號視頻! 方法一:緩存方法 該方法來源早期視頻技術,因早期無法將大量視頻通過網絡存儲,故而會有緩存視頻文件到手機,其目的為了提高用戶體驗…

尚硅谷Vue3入門到實戰,最新版vue3+TypeScript前端開發教程

Vue3 編碼規范 創建vue3工程 基于vite創建 快速上手 | Vue.js (vuejs.org) npm create vuelatest 在nodejs環境下運行進行創建 按提示進行創建 用vscode打開項目 安裝依賴 源文件有src 內有main.ts App.vue 簡單分析 編寫src vue2語法在三中適用 vue2中的date metho…

UnityECS學習中問題及總結entityQuery.ToComponentDataArray和entityQuery.ToEntityArray區別

在Unity的ECS&#xff08;Entity Component System&#xff09;開發中&#xff0c;entityQuery.ToComponentDataArray<T>(Allocator.Temp) 和 entityQuery.ToEntityArray(Allocator.Temp) 是兩種不同的方法&#xff0c;用于從實體查詢中獲取數據。除了泛型參數之外&#…

【深度學習入門篇 ⑤ 】PyTorch網絡模型創建

【&#x1f34a;易編橙&#xff1a;一個幫助編程小伙伴少走彎路的終身成長社群&#x1f34a;】 大家好&#xff0c;我是小森( &#xfe61;?o?&#xfe61; ) &#xff01; 易編橙終身成長社群創始團隊嘉賓&#xff0c;橙似錦計劃領銜成員、阿里云專家博主、騰訊云內容共創官…

git、huggingface 學術加速

1、git 有時候服務器不能直接訪問 github&#xff0c;下載代碼會很麻煩&#xff1b;安裝庫的時候&#xff0c;pip xx git 就更難了 比如&#xff0c;這次我需要安裝 unsloth&#xff0c;官方給出的腳本是&#xff1a; pip install “unsloth[cu121-torch220] githttps://git…

【python】函數重構

函數重構 函數重構pycharm函數重構步驟函數重構練習 函數重構 函數重構是指對現有函數進行修改和優化的過程。重構的目的是改善代碼的可讀性、可維護性和靈活性&#xff0c;同時保持其功能不變。函數重構通常包括以下步驟&#xff1a; 理解函數的功能和目的。了解函數的作用和…

OSPF.綜合實驗

1、首先將各個網段基于172.16.0.0 16 進行劃分 1.1、劃分為4個大區域 172.16.0.0 18 172.16.64.0 18 172.16.128.0 18 172.16.192.0 18 四個網段 劃分R4 劃分area2 劃分area3 劃分area1 2、進行IP配置 如圖使用配置指令進行配置 ip address x.x.x.x /x 并且將缺省路由…

Sortable.js板塊拖拽示例

圖例 代碼在圖片后面 點贊??關注&#x1f64f;收藏?? 頁面加載后顯示 拖拽效果 源代碼 由于js庫使用外鏈&#xff0c;所以會加載一會兒 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name&qu…

【Go系列】 Go的錯誤處理

承上啟下 上一篇文章中介紹了struct和interface&#xff0c;在Go語言中&#xff0c;是沒有Class這個概念的&#xff0c;我們可以通過Struct和方法的組合&#xff0c;來實現Class。我們通過Struct嵌套來實現繼承這樣的一種機制&#xff0c;并且不用設置虛函數這樣的特殊說明。同…

如何防止第三方DLL注入自己的進程?

PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY 結構 struct _PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY {union {DWORD Flags;struct {DWORD MicrosoftSignedOnly : 1;DWORD StoreSignedOnly : 1;DWORD MitigationOptIn : 1;DWORD AuditMicrosoftSignedOnly : 1;DWORD Audit…