00:00
接下来我们来编写属性修改功能,首先我们来点击修改,我们需要回显这个属性的信息,这除了这些基本信息外,最重要的两个就是这个属性所属的分类以及它所属的分组,而且这个分类呢,由于我们是一个几联菜单,那回想我们还要把分类的整个完整路径查询过来,所以呢,来参照接口文档来编写查询属性详情功能,最终返回的时候呢,会带上分组的ID以及它当前分类的完整路径,那么先来编写这个接口,好,它是来发送一个get请求,来到at tr controller里边。我们现在呢,又有一个请求要at t r英f at t那们下边有一个英符at t,但是它现在查询返回的不是at tr nity,因为这里边属性太少了,我们还要额外返回一个catlo pass,那我们把这个pass呢,我直接放到at tr response VO里边多返回到这个属性了,看到log pass我们来到CTRL了,我们希望呢,At tr service有一个方法能获取到at t的info get at tr info传入at tr ID,最终得到这个response VI at tr response VO。
01:20
好,这个response为拿过来把它最终返回出去来创建出这个方法,为这个方法呢,添加上实现al。Al,好,我们来进行查询,首先来查当前属性的详细信息,this.get8id,我们先查到at tr的详细信息,我们用at tr service的GET8ID方法,好,先查到了at tr nity。接下来我们再查询到它所属的分组信息,当然这些东西最终要封装到这个VO里边,所以我being us,我要准备封装到这个VO里边,我们把这个at tr response VO提前构造好,等于你有一个at tr response VO,我们将查出来的数据呢,首先基本数据对拷过来,Copy properties,我们将查出的at tr nity的数据拷贝到response VO里边。
02:23
那拷贝过来以后呢,我们response VI里边关键还要放两个东西,第一个它所属的分组ID,第二个是它所属的整个分类的完整路径。好,那这两个呢,就来进行查询,首先分组ID也一样,我们先要去关联表中查出它对应的分组信息,所以呢,这有一个relation deo,好,Relation doo,这是他们的关联表select one,你有一个corper。他要查询的是at tr和at t分组的关联关系点eo,查询条件是什么呢?那现在传了一个at trid,我们按照at TD查询它对应的分数。
03:07
At tri。好,我们将这个先返回,这是它的分组信息,AR group。然后呢,我们根据这个分组的关联信息,我们才能得到分组ID,所以我们在这呢,可以来把分组ID设置上at tr group relation.get一个它的分组ID,包括我们既然查询到这了,我们同时给这个VO里边我们也封装上当前分组的名字,这个名字我们就用at tr group DA我们SELECT8ID查到当前分组。对应的分组详细信息,我们拿到它的这个名字,点get at加group name,好,这是分组信息的设置,设置分组信息。
04:01
当然,这里所有的东西我们都要做一个非空判断。好,它不等于空,不等于空呢,我们就查出了分组的ID,那查出了分组的ID,那才能查出分组的信息,包括呢,分组的信息不为空了,我们才能设置名字。At tr group entity不等于空了,我们才能给这设置名字。我们把这个名字呢放在这。这是分组信息,分组信息完了以后呢,我们再来查询它的分类信息。设置分类信息。首先当前实体类里边。他有自己所属的分类ID,但这个ID呢是不够的,我们要查对应的这个分类的整个完整路径,而这个呢,我们在分类的service方法里边,我们之前写过这个功能,所以我们用category service把它的整个service我们来注入过来,Autowa。
05:06
那在这个service里边呢,有一个功能。叫find catalog pass,当我们把分类ID传过来以后,我们会返回分类的完整路径,那有了这个完整路径,我们就可以放心的设置上去了,当然我们也可以给它设置上分类的名字,Set catallo name,名字呢,无论是使用分类的service还是分类的do都行。好,那点s select8id,这是分类的ID。放过去,好,我们把分类的名字放到这第二,Get name,通过这两个设置呢,我们response的数据就好了,但这一块还是要做非空判断,如果我们查出来的这个分类的实体类不是空的,我们就给它设置名字。复制好,我们放在下边,如果它不等于空。
06:03
我们就将这个名字给它设置上来。重新启动,我们来进行测试。只要有分类的完整路径,我们在这一块呢,就会回选成功好。我们把它呢关掉,F12打开控制台来监控一下这个network,来准备发送修改请求,先把控制台其他的错误清空掉,好,我们点击修改。点击修改呢,我们发现七号这个属性的信息,我们在这儿预览,它对应的分组ID是空的,但是分类的完整路径有,所以我们这个所属的分类那就有了,那么就可以重新为他选择一个分组,因为七号我们之前录的时候没有分组,我现在点击确定好,那就没问题了,包括我们来查询,我们现在来看一下八号它的这个修改能不能回显正确来点击修改。八号呢,这个分组是主体,如果我给它改成基本信息,我来点击确定,我们会发现我们在这儿修改,最终确定的时候并没有保存成功,因为我们发送的是修改请求,调用的是update方法,而update方法呢,我们还没有设置,我们只是把保存方法调用了它,Save at tr设置好了,那么update我们还要做一下,那这呢还是一样,我们收的是at tr VO,因为页面呢会给我们提交分组等各种信息,那么在这呢,调用update at tr。
07:33
好,我们把这个方法创建出来。我们来创建出它的实现,首先那要修改,我们就需要调用它的update方法对它基本数据进行一个修改,那基本数据呢,我们先来把at t n t们来创建出来,用一个at tr n,这基本数据都来源于页面,我们将页面来的数据,我们让它封装过来,Copy properties页面给我们提交的at tr。
08:02
我们把它对应的属性封装过来,好复制在这来基本的修改完成,那还要完成修改分组关联。这关联呢?我们是要找到当前这个at tr属性对应的分组,把这个分组ID呢一改就行了,而且我们目前做的都是一个属性对应一个分组。不存在一个属性对应多个分组的情况,所以我们最终发送的SQL语句应该是update我们的关联关系set at tr group ID等于新的值。而条件呢,就是at t,我们的这个属性等于我们指定的值。那么来到这就相当于使用分组关联的这个do relation do update,我们现在不是按照ID进行修改的,我们按照指定条件,我们使用update。你要更新的值,我们new一个at t at tr group entity,我们创建一个它。
09:06
我们要更新的值呢,就是这个,而我们的更新条件有一个update waper条件呢,就是我们把它先放里边,按照我们at TD e口at TD等于我们指定的值at TD。我放在这好,它就等于我们现在新的这个提交来的at t。Get at t ID,这样我们就更新了它的关联关系,而主要这个relation editity里边我们要设置上我们要更新的at tr group ID group ID就是新提交来的group ID,然后呢,At tr ID我们要更新哪个,那就是提交来的at t RD,那整个两个都操作成功,那就算更新成功,我们先来加上trans塞声道注解,我们重新启动测试一下。
10:02
我来刷新。我们现在来点击修改。我们将入网型号呢所属分组它改成主体,现在点击确定。我们来看一下效果,我发现在这儿呢还是没有,但是如果我们修改下边上市年份,我们将它的改为基本信息,我来点击确定。那在这儿呢就有了,那原因就是我们在这是做一个修改操作,然而如果我们第一次这个属性本来就没有分组,那这其实是一个新增操作,所以到底要修改还是新增,我们还得确定一下。我们首先使用relation Du,它里边呢有一个方法叫count,我们可以来根据一个条件来统计数量们就根据corrywaer,我们按照这个条件看at tri,当前at tri有没有关联的分组属性,我们这一块呢,传的是corrywaer,但还是使用这个entity。如果说它统计出来有这个属性count的值是大于零的,那说明我们是进行一个修改,那如果它不大于零,那我们就要进行一个新增,所以我们在这儿if,如果count大于零,我们将我们的修改操作拿过来。
11:18
就是我们这一块,我来复制一下CTRLX剪切放在这。否则呢,那就是我们的新增else,新增的新增的也是这一条记录,我把它整体放到外边。那么就用do点一个insert。叫我们这个值新增过来。重新启动,再次来这儿呢,进行一个测试,还是先来刷新一下。好,我们现在来修改入网型号,我们将它的这个分组现在改为主体,由于七号的这个属性第一次是没有这个关联关系的,所以我们应该是一个新增,我点一个确定。
12:02
如果改成功,我们看这个列表,主体没问题,包括这一块的修改也都没问题了,我们来重新把它改回主体确定。那规格参数的查询与修改功能我们就完成了。
我来说两句