音乐网站开发 群,wordpress是英文版,用illustrator做网站,上海建网站制今天是刘小爱自学Java的第152天。感谢你的观看#xff0c;谢谢你。学习计划安排如下#xff1a;补充完昨天商品查询中关于分类和品牌的部分#xff0c;其中牵扯到了两个非常重要的知识点#xff1a;Stream流的使用#xff0c;这个学过后基本就没怎么使用过#xff0c;这次… 今天是刘小爱自学Java的第152天。感谢你的观看谢谢你。学习计划安排如下补充完昨天商品查询中关于分类和品牌的部分其中牵扯到了两个非常重要的知识点Stream流的使用这个学过后基本就没怎么使用过这次做一个回顾。通用Mapper根据多个id批量查询以前在写其使用教程的时候都不知道还有这种用法。一、业务需求分析昨天虽然完成了商品查询但是其有一个问题我们查询的数据是SPUSPU中关于商品分类和品牌只是记录了其Id。而在前端页面我们需要显示商品分类和商品品牌对应的具体值。有两种解决方法第一种响应SPU中关于商品分类和品牌对应的id给前端再分别根据id发送请求去数据库查询这种对于前端人员来说就比较麻烦了。第二种在查询SPU时就分别查询出对应的商品分类和品牌再将其数据一并响应给前端。首先要在前端页面确定需要的字段名分别为cname和bname。其次在SPU实体类中添加这两个属性当然最正规的做法是重新创建一个实体类这边为了方便就不这样做了。使用注解Transient将这两个属性设为瞬态意思是从数据库查询时不考虑它们。最后在查询完毕后通过setCname方法和setBname方法给它们赋值再响应给前端。二、Java代码编写我们从SPU数据表中查询出了商品分类和品牌对应的id再分别调用CategoryService中的代码查询商品分类。BrandService中的代码查询商品品牌。1Category业务代码补充因为有多级商品分类所以对应多个id。根据多个id去数据库查询如果是常规方法会将这些id遍历再一一去数据库查询。但是在通用Mapper中有selectByIdList()方法可以直接根据id集合完成批量查询。只需要在Mapper层中继承IdListMapper接口并指定泛型即可。同样的道理有批量查询也会有批量新增继承InsertListMapper接口并指定泛型即可。2Brand业务代码说明因为品牌不像商品分类有多级之分一个商品就一个品牌所以查询起来很方便。使用通用mapper中的根据主键查询即可。3Goods业务代码整合上述两种查询方式可以通过前端页面依次发送请求访问服务器实现查询。但比较麻烦不太合适所以我们要做的就是将上述两种查询方式整合到Goods业务中。这样等于是只需要在前端发送一次请求就对数据库完成了三次查询①spuList加工处理spuList是从数据库中查询到的spu集合这里对它的处理说白了就是依次调用spu的setBname方法和setCname方法给spu添加对应的商品分类和品牌。②品牌的添加setBname方法因为查询到的spu中有品牌对应的id所以直接调用BrandService中的方法即可查询。③商品分类的添加setCname方法这个就比较复杂了依次获取多级分类对应的id使用Arrays的asList方法将其转换成集合再调用CategoryService中的方法查询。查询到的是一个商品分类集合按照我们常规的方法就是遍历商品分类集合然后逐一获取各个分类再将这些分类用“/”拼接起来。这样自然也是可以的但是使用Stream流更加地方便Stream流是jdk8的新特性。我们看上述图中关于Stream流的注释都有很清楚的说明依次调用steam()方法将其转换成Category的流。map()方法将其转换成了字符串的流。什么字符串呢就是Category中的getName方法。collect()方法完成流的收集即流结束了。其中Collectors.joining(/)是表示将收集到的数据以“/”完成拼接。三、测试代码编写完毕做一个测试再次查询商品列表会发现商品分类和品牌就都显示出来了。其中商品分类因为是多级分类所以用“/”隔开这就是在Stream流中设置的。最后行有不得反求诸己我是刘小爱一个白天上班晚上学习的95后沪漂不为其它只为学会自律做好自己也愿我的每日打卡能给你带来勇气欢迎点赞关注和评论。