启动测试(建立索引库,映射,用分页结果集的方法把当前的页面的商品数据拿到后,再用do,while方法把当前商品页面转换给goods列表,再把结果导入索引库)

我们要去实现对上一次内容的测试,上一次内容大概就是讲了怎么样去完成Goods查询页面的编写。

下面的测试当中需要把上次做完的东西导入索引库当中对索引库进行增删改查,然而就会用到下面的方法,一个是Template方法(导入索引库),一个是Repository(进行增删改查)
在这里插入图片描述

上图中的Repository是怎么继承接口的呢?Repository这个是用来进行查询商品的增删改查的,所以你需要去继承ElasticsearchRepository的方法,并且传入泛型,一个实体类,还有一个Long,Long是主键的类型。
在这里插入图片描述
紧接着我们还需要导入这些东西,像是SearchService,这个就是转换的作用,把Spu转换成Goods,还有导入GoodsClient,这个的作用就是

接下来我们就要使用Template方法去建立索引库,导入Goods这个已经做好的索引库实体类,然后建立映射(建立映射的意思就是我们之前已经在Goods里面配置好了映射关系,比如每个封装属性上已经打好了注解,这就是映射关系,这里我们需要用putMapping完成这些映射的配对)

在这里插入图片描述

看看下面这个方法,我们需要先去定义条数和总条数,为什么要定义这些呢?因为我们需要在分页结果集中传入这两个信息。整个类的具体思路是怎么样的呢?首先我们要建立索引库,建立映射,然后要建立分页结果集,再通过把spu转换为Goods列表的方法进行转换,最终反馈给前台,就可以了。

所以我们下面使用了分页结果集的方法付,传入SpuBo,SpuBo就是有总条数,分页数等等可以接收,所以用这个实体扩展类,然后调用goodsClient方法,这个方法就是spu的方法,传入当前页数后,就会加入当前页数的全部商品信息,因为querySpuByPage获取到的是一个结果集,你可以回去看看它的方法,所以用分页结果集来进行接收就行

为什么result.getItems可以用List来接收,下面的图片中我放了PageResult的结果集方法,你可以看到Items这个方法是一个List方法,它本来代表的是一个当前页面的数据,因为加了List,所以是当前页面的所有商品数据,也就是第一页的所有商品数据(我们这里page等于1),在我们这里key为null所以直接查询到的是当前页面的所有数据。然后我们再把一个个spuBo转换为Goods,所以就是调用了searchService方法,上一篇博客我们就是专门讲了这个方法是怎么创建的,让searchService可以把spu转换成goods列表。但是这里出现了异常。
在这里插入图片描述
下面是goodsClient的原生方法,你可以看到,它是接收到页面数,总页数,是否通用,查询条件这些信息,然后把查询到的所有结果都进行一个返回
,返回成结果集的形式。虽然结果集是一个泛型,但实际上也是返回了结果集,所以上面可以用结果集进行接收
在这里插入图片描述
要注意这个分页结果集里面是少了通用方法。
在这里插入图片描述

处理异常,用try,catch方法。
在这里插入图片描述

有异常,我们抛出了以后,就要return null,有人就会奇怪,为什么我们要return null呢?那我们之前转换的东西不是白费了吗?其实不是的,在上面的return searchService.buildgoods这个方法里面已经说明了只要spu转换成功为Goods,就会跳出整个方法了,但是最终return null的意思是,如果出现了异常,那么就会return null。然后到最后我们要把全部结果转换成一个集合,用collect方法,最终返回一个Goods的List。
在这里插入图片描述

然后最终我们就要把这个商品集合导入到索引库当中,但是这里要注意,因为我们上面写的page为1,这就表示,我们刚刚操作的是把第一页的商品结果集导进来索引库而已,但是第二页,第三页的数据并没有导入到索引库当中,所以我们要做一个循环
在这里插入图片描述

我们使用do,while循环,这个循环的意思就是一直执行某个方法直到达到什么条件后就停止,我们把下面的方法放进while里面
在这里插入图片描述

最后我们需要加上这个循环条件,每次执行完一页数据的转换之后,总页数rows就会获取items的总长度,如果当前数据长度(也就是页面数量)还不是100,页面数就+1,循环就得以继续,如果当前页面数等于100,那么说明数据已经被传完了

在这里插入图片描述
这里解释一下上图中的原理,因为我们定义总页数是在循环外定义的了,所以总页数按道理说就是100,但是这个100没有什么影响,因为我们在循环结束后就会对这个rows的值进行改写,所以rows的值代表的是items的数据集合的长度,也就是当前页数转换到哪里了,我们就会用rows做一个记录,比如你转换了第一页,我们的rows就等于1,因为还没有达到while的条件也就是rows等于100,所以page就+1,循环得以继续,当第二次的时候,rows的值就为2,循环还是继续了,最终rows等于100的时候,达到了条件rows等于100,所以循环就结束了,数据也就传输完了。

在这里插入图片描述
我们运行这个测试类,然后到索引库处进行查询,结果为182条数据

在这里插入图片描述
我们再到数据库进行核对,也是182条数据(看右下角)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值