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
所以比較簡單