00:01
好,然后再往下呢,下一个工程啊,有瑞卡这边就准备好了,下一个N。这个地方我们以前的话,N就建几个设计队就完事了,在这儿呢,我们这里边。到这儿就有有一些个地方得说道说道了啊。呃,这个NTT呢,我把这个之前这部分啊,我们把它。建包啊,这个common工程呢,建包呢,这是将来放我们接口的,这是放我们常量的,但我们常量放在U久里边的哈,这个NT呢,就NTT这会又分成又更细分了一些个这个这个类别了啊,这个工具类也放到U9里边了。对,所以说我们这边建包就不太一样了。我们这边建包就不太一样了。我们这个是N工程。啊,哦,对了。对,有一个这个事儿哈,对了。
01:03
那么我们将来这个接口放哪呢?没有靠门。Common是在common是是以前的,是这个是个悠久哈。你在这里边再去整这个复印这些加进来这个里边不太合适是吧。在N里边加这个名字,不对应你的N就放十几类的,你把这个结果放这里边是吧。所以说呢,我们对这样这样说的话,我们这里边儿呢,得还得再多建一个。多建一个就专门就放这个接口的。啊,要不就是把实体类这个不要了是吧?Common common里边有接口有实体类,但这个已经建出来了是吧?建出来就不要把它再干掉了是吧。呃,不。改名字挺麻烦的。改名字呢,就是说呢。呃,你需要注意好几个地方,你这个工程这样名字改了。
02:02
你过来以后呢,你还得记得把这个他的这个地方改了。不然的话,这儿不会跟着改的。你回头回头,这就这就变了,你不要跟我抬杠。不要跟我抬杠,这个没有意义。然后你这里边也得跟着也得改,你包括你这里边的这个model也得改,这个这个名字可以改,可以改,但是要改好几个地方。然后如果说回头你做的时候呢,你也来改名字的话,你可能你可能有的地方你就忘了改了,忘了改了回头最后就出错,出错还得我给你调是吧。还是我的事儿。啊。所以说就是说咱们新建一个啊,咱们就咱们新建一个API这个模块,这里边儿就放我们这个接口的。就这个就比较闹腾了,所以说把我们这个图,咱们。给他改一下。哎,所以说那要建的工程就又又得多建一个,这个就挨个往后排吧。
03:02
这是一个API。API啊,就是专门去放我们这些个接口的。呃,CTRLC,它这个也不需要端母号啊,它不需要端母号。然后这个就是将来有接口就放这里边儿。对,这是这是这个刚才发现一个,刚才有一个遗漏的哈。一个遗漏的。呃,然后呢,这个完事以后哈。嗯,下一个就是。嗯。说我们工程啊,NTT里边呢,去创建。建包的话,那这个就都不用了啊,你看这个API的话是放API里边的,这是在YouTube里边,这也在YouTube里边,它就是A它自己。
04:02
我们这儿呢,咱们得就是需要去说一下了啊,说一下就是这个。呃,实体类呢,我们进一步细分成啊,V po DOD to等等哈这样的几种。就是这些是什么意思啊。我们把这一套呢粘过来啊。尸体类的进一步的细分。说啥叫这个,呃。咱们一个一个说啊。这个就不动了。说这个VO呢,叫object视图对象。那他就是跟浏览器打交道的,或者说就是跟前端打交道的。啊,他就是跟前端打交道的,哎。那这个呃,它有哪些个用途呢。
05:03
一个是封装浏览器表单提交的数据,封装成这个VO的对象。另外一个呢,把后端的程序。这个组组织起来,这个数据呢,封装成VO的对象,发给浏览器,让浏览器去显示。所以其实呢,无无非就是接收浏览器的数据和把数据呢给浏览器,让浏览器去显示。就这两个目的。所以这样吧,这个其实我们可以这样来说啊,是一个是接收浏览器发送。过来的这个数据。另外一个呢,就是说把数据发送给浏览器。啊,去显示。啊,一个是一个是他一个是接收啊,一个是发送。一个是接收浏览器的数据,一个是发送浏览器数据,反正他就是跟浏览器打交道,或者说是给前端去打交道。
06:04
视图嘛,对吧。那这个po是啥意思呢?叫持久化的对象啊。一个是。呃,把数据存入数据库。从装到po对象里边去,存入到数据库,另外一个是从数据库呢,把数据查出来,存到这个po对象里边。所以这个po呢,就是和数据库表对应的一个数据库表对应一个po的一个对象。所以po对象是。和。数据库表。对应。嗯,一个数据库表。去对应一个,呃。一个数据库表对应一个po对象啊。就是以前我们所谓的那个OM。啊,这个叫做。Object。
07:01
啊,Relation mapping。哎,就是对象关系映射啊。就是对象,指的是我们Java的对象,这个关系呢,Relation就是关系型数据库啊,指的是关系型数据库里边的表,把它们之间建立起来这样一个对应的关系。这就是我们以前哈说我们建一个实体类,就是和数据库表是对应的。呃,说这个do是啥意思呢。说数据对象。啊,Data object数据对象。比如说从red里边出来的数据封装成这个do对象,哎,我们去给他,哎进行再做后续的操作,来search里边查到数据封装成do的对象,搜的里边查的数据封装成对象,反正就是第三方的其他的中间件吧,或者说第三方的接口从这些地方拿到的数据啊。哎,从这个中间键。
08:01
或这个其他的第三方接口,诶查询到的这个数据啊。就是去封装。为这个do对象。那这个d to又是啥意思呢?Data transfer object,数据传输的对象。Data transfer object传输的,哎,就是从往provider去传provider返回数据给,就是用来做这个做这样一个传传输的。就是这些呢,是我们在分布式环境下边,或者说这个项目很大了,它这个功能很复杂的,然后这个实体类呢,就做了这样的这个区分啊,就区分成了这样很多种不同的种类。这有啥用呢,我们以前呢,就一种,就是比如说呢,Employee就是employee。就employee就包打天下了,走到哪都是它,跟浏览器交互也是它,跟数据库表交互也是它。啊,那你以前就比较简单的时候,也没有什么中间件呀,也没有什么第三方接口啊,也没有什么consumer provider呀,有没有那些事儿,就一个实体类呢,就整个项目里边就都在用了,从前到后用的都是它。
09:12
那么这个功能变复杂以后啊,这个就都用它吧,这个有时候就觉得捉襟见肘啊,就觉得不够用了。哎,就是说呢,这个。浏览器,比如说呢,举个例子啊,他提交一个表单,他提交有这三个字段。这三个字段呢,对应一个VO对象啊,用VO对象呢,给封装起来了。那么那么我为了做后续的操作呢,我从red里边呢,又查了两个字段的值,封装了一个do,从search里边呢,又查了两个字段。拼了一个do,把这三个呢拼一起封装成了一个do对象,传给了一个provider provider呢做一些个必要的运算,它呢封装到一个po对象里边,保存到数据库里边的。这不是必须这样的哈,不是必须这样的啊,我这个只是说举一个例子。
10:04
啊,就是这个时候你看相比较来讲呢,这个这两个do和这个VO呢,是一个是都是小对象。封装到这个d to里边呢,把它组成了一个大对象。哎,把这大对象一保存,也有可能是反过来的,也有可能是这个po呢,是一个小对象,它有好几个从不同的表里边啊去查出来的这个小的对象啊,当然也可能是不同的数据库表,也可能是ES啊red啊他们哎拼成的这个小的对象。然后拼成了一个d to,再拼一个大的VO。啊,然后这个VO呢,大的VO到浏览器上面去显示。都有可能,也就是说呢。在这个功能复杂以后,你浏览器上面这个表单呀,要显示的数据啊,他们要用到的字段和你数据库表啊,这个red啊等等这些个中间键呀,第三方接口啊,他们字段都不太对应。啊,也可能这个表单上面的这个字段有这些。
11:02
你数据库表呢,可能是这些。但是呢,这个red里边是这些。他们彼此之间呢?不是这个严丝合缝的,这个对齐的。他们彼此之间是有差异的。所以说呢,可能需要把他们整个再去给他们综合起来去拼。那么不同的地方呢,就是会用到不同的这样的专门的实体类。啊,所以说这个不同的这样的对象哈,它是在不同的场合下边有专门的这个用途。对实体类呢,它的根据不同用途啊进行了一下这个细分。啊,这个也是需要大家去慢慢在我们用的过程中呢,慢慢去体会,我们现在呢,就是引入这个概念吧,是让大家呢先初步有这么个感觉啊,以后呢,上了班以后呢,也很有可能会接触,会接触的到啊。哎,然后我们现在呢,主要就是说还用不了这么复杂,咱们就是用个VO用用一个po。所以说呢。
12:04
复制过来的呀。哦,是这个哈。那然后呢,说这个比如说。我一个呃,D to里边的对象,想把它里边的数据呢,存到这个po里边,这个我怎么去把这数据呢,去转到这个po里边啊,怎么去做这样一个数据的转换。不需要我们一个一个的去set,我们自己手动set太麻烦了,这里边儿呢,有一个工具类,Spring提供的一个工具类有一个B。Copy properties哎,从这个对象复制到这个对象里边啊,它会根据什么呢。假设哈,假设你这儿有一个VO的对象。这边呢,有一个do的对象啊,假设VO里边有这样些个属性。啊,比如说有一个sto的。呃,内幕。
13:00
呃,它有一个sto的一个位置。他可能呢,会有一个S,他会可能会有一个别的号哈。啊,有个他可能会有style。哎,他可能会有一个呃,Behavior。假设吧,就是这个,哎,一个是在这个页面上显示的样式,一个是它的行为啊,这是用来显示的,可能是这样的,但是我们这个d to呢,D to里边它有sto的name sto的H,它有sto的ID。然后呢,他可能会有一个persist。啊,什么什么一个什么什么东西啊,他可能有一个推包name哈。假设啊,举个例子。你看他这个时候呢,就是这两个属性是一致的。其他的属性不一致,那么它就根据这个一致的属性呢,去找对应的盖塞的方法去进行这样一个复制,别的不一致的就不管了。
14:02
不一致就不管了,你有就有,有就有吧,啊不影响啊,我们就把这个一致的属性呢,给它这个复制过去啊。这就是我们用这个工具类哈,直接就能够把这个对象里边的,哎,这个属性值注入到这个对象的相同的属性的里边。啊,他就能够去做这样一件事。啊,这是我们后续会用到这个啊,所以说我们现在呢,咱们在这个NT这个工程里边的话,我们去建包呢。咱们就是去创建一下啊,这个我们的包的。呃,名称哈。创建包。那就是说这个就比较简单了,就ND下边一个是po的。呃,一个是这个VO的。
15:02
关于这个po和这个VO呢。在这个阿里的那个这个这个代码规范的手册里边哈。它这里边儿是有的。我们看的是哪个哈,详尽版应该是。哎呀,这个是在哪个里边写的呢。命名风格常量。编程规约命名风格。哎,在这哈,他说类名呢,使用upper camel case风格。开是啥呀?这是不是,这是骆驼吧?是不是骆驼?叫咋写来着?C。
16:02
就是骆驼的这个鞋,骆驼是吧,那么我们开挖的时候,你但凡看到骆驼,你应该想到什么呀?哎,拖峰对吧,哎,Upper camel呢,就是首字母大写的驼峰式。有一个,那你还有对应的有首字母小写的驼峰式对吧?哎,这个类名呢,要使用呃,首字母大写的驼峰式的风格,但以下情形例外。Bo to po,什么UID等等啊,正立是这样的,就是说哎,这个和这个对应的话,意思是告诉你类名不要首字母小写啊。哎,首字母小写就应该打断你的腿啊。然后呢,这个do呢,这两个字母呢,都是大写的,你不要把后边这个小写的,因为这个东西呢,它是相当于是两个单词的缩写。这个缩写呢,一般就都是这个,都是都是这个胶。都是大写的啊,一个完整的单词才做这个驼峰式的啊。
17:00
这个s service啊。哎,我去这个叫。这个就没有那啥,这个这个这个有点。啊,TCP这个也没有哈。而且这个这个。那这个没有。这这是一个什么样的那啥,那可能是只有这几个是例外的,对吧。哦,那看来就应该是只有他们是例外的。只有他们是例外的,你看其他的就都还是正常的啊,你看这个ta这个啊,他也没有。啊,那它这个不是说以不是以缩写为判断依据的,那就只有就就是这些的话啊,要这些的话就不不做驼峰式的处理啊,其他的还是这个驼峰式的。好吧,那人家人家人家说啥咱就听啥吧,人家是厉害的是吧,这个方法名参数名成员变量,局部变量使用这个lower CA就首字母是小写的这种。长量名全部的大写啊,然后中单词中间下完线隔开,力求语义表达完整,不要嫌名字长啊,长一点不要紧,你把它给弄清楚了,你像这个maxto count和max count。
18:13
这个就很明确,这个就是一个最大的库存的一个数量,这个就是最大数量,你也不知道是什么的最大数量诶。所以说有的时候你会看到这个名字,可能为了说清楚,他可能起的很长。好,这个时候咱们就按这个呢,咱们去把这个包给它建出来。嗯。哎,说了半天就建了这么两个包。
我来说两句