00:00
接下来我们来编写查询规格参数列表功能。F12,打开控制台,当来刷新的时候。它会发送一个查询请求,在这API product at tr,它来查规格参数,也就是我们的基本属性best list,而且传入零是查所有的规格参数的,那如果我们要查某一个分类下,那我们来点击它会自动呢发送当前分类ID,包括我们还要带上模糊查询,我们来输一个一,我们在这查的时候呢,K也会有一,我们来编写这个接口product at tr base list也可以参照接口文档,那现在来编写获取分类下的规格参数功能,好,我们复制这是一个分页查询,来到我们ctrler。At tr ctrl了我们现在要做的第一个功能,好,我们放在这,这是我们的路径。Public,我们先来写一个R,我们现在是查base at tr的list,我们先来return一个r.OK。
01:06
我们要处理的请求get,一个get请求是product a tr,我们叫base list,带上三级分类的ID,同时呢,它还会带上我们这些分页参数,所以我们就在这来加上我们要获取分页参数request per,我们将所有参数直接封装成一个map获取来。并且呢,这是路径变量,我们把三级分类的ID,我们拿成路径变量countlo ID。一个pass variable好,来获取三级分类ID。接下来我来编写这个分页查询,还是h GTR service,我们希望它有一个方法。叫query base at tr配置,那是要进行分页查询的,传入我们分页的这些条件,包括我们三级分类的ID,最终分页会帮我们返回配us。
02:09
查询完了以后,我们最终会返回page,整个分页的信息内容跟以前这些都一样,那么也来put page。我们添加上这个方法的实现,我们先创建出这个方法在接口位置,那再来添加上这个方法的实现,Alt添加实现好。同样封页,我们将上边的这个封页直接获取过来,这我们封页方法我们来进行基本编写,首先这个corry rapper有比较复杂的条件,我们把它提取过来。这是我们的corry wrapper把这个rapper放在这。我们调用this配置方法,先将分页条件封装成我们一个IPA参数,这个工具类呢,已经帮我们自动封装了,最终调这分页查询,但是我们要根据不同。情况要封装不同条件。首先第一个情况,当catallo ID等等零,那这个呢就是查所有的,当它不等于零的时候,我们得拼上一个条件,在cor upper里边点一个E口,每一个属性都有它关联的分类,在这保存了它当前的分类ID,所以我们得判断,如果它这个分类ID等于我们指定的这个值,那就给它进行查询,这如果有分类的情况下,那没有分类自然不拼对的条件。其次我们还要在里边要能获取到我们的检索条件,按照K进行检索的检索条件,同样把它变为string,强转为string。好,接下我们来判断,如果这个检索条件存在这U求it empty。
03:49
把这个复制过来,如果有这个检索条件,那么还应该让它分类的ID,属性的ID或者属性的名字是我们检索的这些值,在cor upper里边我们进行拼装,由于前面可能会拼装成分类ID,所以我们继续来按我们添加一个条件,这个条件是什么呢?是它等于这个,或者它like这个。由于这两个条件是一个整体,所以我们来写这个箭头函数。好,我们把我们要用的这个waper传过来,这个waper里边呢,我们来封装上两个条件,第一个条件第一个我们的at t rad等于你指定的值。
04:33
等于指定的值,或者点一个哦,或者我们的at tr name like我们指定的这个值,好,At tr name like我们指定的这个K。那这个分页查询我就写好了,重启来进行测试。我们之前呢,保存过两个属性,我们现在来看一下页面效果。我先来进行刷新。
05:01
它在这呢,已经获取到了两个属性,一个是入网型号,一个是上市年份,可检索不可检索状态,包括他们的可选值列表,我们鼠标放在这呢,它会精确显示掉完整的可选列表,但是注意我们在响应的时候,这儿还有所属分类和所属分组,我们来看一下接口文档,当我们来响应的时候,我们多了一个这个属性属于哪个分类和它属于哪个分组,所以说呢,我们又要自定义封装一个VO,那么就在这呢,来写一个叫at tr response VO,这是用来做响应的。响应数据呢,不仅包含它的这些基本数据,把这些基本数据复制过来。它还呢,多包含了一个我们这两个名字,所以我们可以来直接来继承我们这个at t VO。也可以直接复制过来,那在继承的时候呢,还是at data,那将它多的这两个属性填上来,一个是分类的名字,一个是分组的名字。
06:09
好。我们来第一个private string catalog name,这是分类的名字,所属分类和它当前string所属的分组。那这一块信息要进行查询就稍微比较麻烦了,来进来,首先在分类上我们保存了分类ID,但没有保存分类名字,我们可以去做一个冗余字段,但是在分组上呢,我们直接没有在属性级别保存,我们是保存在一个中间表,所以我们还是必须得进行查询。而查询呢,我们又不推荐来进行连表查询,比如我们来在检索PMS表的时候,来照一下这张表,找到它当前分组的名字进行返回,那在大数据量下是很危险的,比如属性表里边,我们现在有100万这个属性并行商品很多分组呢,就算只有1000个分组,那在极端情况下,他们如果做笛卡尔基,那就会生成10亿的中间表数据。
07:10
这是一个非常可怕的操作,所以呢,我们希望在这查询出分页结果以后,我们再查一遍当前的分组信息,以及它当前的分类信息,所以我们在这一块来封装,返回的时候,查询条件是它我们在这配置得到了IPA置对象是这个,并且呢,我们用new配置U已经将它封装了,好,我们将它封装了。我们返回的最终是这个page us,但最终这个page us里边的数据不是at tr n t,它里边的值是不够的。那是什么呢?我们从配置里边,从真正分页查询到的配置里边,我们得到records,得到它获取到的记录,这是一个at t n,我们将它们进行重新处理,我用流式编程stream点一个来map。
08:00
我先来映射里边的每一个元素,这个每一个呢,都是at tr nt。那最终我们要返回一个什么呢?我来最终是来返回我们的这个VO的,所以我用一个at tr response。我们将这个VO放到这,然后呢,将我们at trity里边的基本属性先对拷过来,我们使用being us,把当前at tr nity的属性先来拷贝到at tr response VO里边。那这个VO就算是有了nity里边的基本数据,但VO里边现在我们还要设置上两个。设置我们分类和分组的名字,那我们这个at t里边我来set一个group name,这个group name呢,当然可以从它的分组ID里边查到,所以我们在这儿就要注入。
09:01
分组ID的DAO。At tr group do at tr group DAO,一个autowa,包括我们还要查分类,我们注入category DA category DAO,好,我们把这两个呢都来注入,那首先我们要进行分组的组名查询,我们用at tr group DAO select8id,我们得知道它的分组ID。但这个分组ID呢,又得从中间表里边查,按照当前属性的ID所关联的这个分组ID,那我们接下来把中间表的。At tr和at tr关联关系的这个do注入进来,我们这已经有了,所以我们直接用这个关联关系来查一下,我们先用关联关系的这个do点一个select one来查询一条记录,这个记录是什么呢?我们使用corrywaer,有一个corrywaer查询条件,我们是要查他的关联关系,At t RA at tr group relation entity,这个是什么关系,我们equal equal要按照当前。
10:08
属性的ID,查出它所在的分组的ID,好,按照属性的ID,属性的ID,那就是当前at t r nt传过来的属性id.get属性ID。这是我们这个属性ID,那么最终得到了这个NTT,我们就可以得到它的组ID,得到组ID我们就可以利用分组的DAO at tr group DAO。点一个select by ID,我们就用它来找。好。删掉。而且大家注意这一块,有可能查出它的这个分组关联信息是空的,比如我们第一次录数据的时候,我们没我们没有指定分组或者等等,所以我们最好在这判断一下飞空at t,当它不等于nu,不等于none的时候呢,我去给他查,查出我们当前分组的这个信息,然后呢再将组的名字设置进去。
11:13
那组名呢,那就是at t group ntity.get at tr group name,那分组我们就设置好了,分类呢就简单了,直接c do.select8id,那分类的信息我们也在这个at tr nity里边有一个分类ID,好,我们让他返回这分类的实体信息,接下来我们还是一样判断,Category enity不等于none。我们给它设置分类信息,At tr response为点set catalog name它当前分类的名字,我们就把它拿过来get name,那这都做完以后呢,这个at tr response view就封装完成了,然后我们把它们再来点collect,收集成一个集合to list。
12:00
最终的这个list呢,就是我们要返回的这个response VO的list,好,我们把这个response Vs最终设置到这个配置U中,那配置us中其他都一样,但是它的整个结果集用最新的处理完以后的这个结果集好我们来重新启动。我现在来测试一下。我来刷新。那现在呢?不仅能查出所属的分类,而且指定了分组,我们还能查出分组,包括我们来测试模糊查询。比如来搜索八查询全部能不能搜索到八号属性,包括呢,我们来看手机类,下来查询八号也是可以的,七号也都能查到,那下一节课呢,我们再来再来编写修改功能,特别是这个修改,我们要回写他之前选择的这个分类以及分组。
我来说两句