谁能帮我做网站,电子贺卡免费制作,百度关键词快速排名,destoon 手机网站模板本节的主要内容是在前一节的基础上#xff0c;提供结构查询出所有的二级、三级分类数据。
一#xff0c;构造响应体数据结构
后端返回给前端的数据结构是在开发详细设计中应该确定的内容。
分析前端需要的数据结构#xff0c;后端要将所有一级分类包含的二级和三级分类信…本节的主要内容是在前一节的基础上提供结构查询出所有的二级、三级分类数据。
一构造响应体数据结构
后端返回给前端的数据结构是在开发详细设计中应该确定的内容。
分析前端需要的数据结构后端要将所有一级分类包含的二级和三级分类信息封装好返回给前端。
以JSON格式返回JSON最外层是一个对象这个对象有多个属性key是所有一级分类的catId。 属性值是一个数组包含这个一级分类下所有的二级分类信息。 每个二级分类对象中除了包含本身的分类Id外还包含其所属的一级分类Id以及其下的所有三级分类信息。
package com.atguigu.gulimall.product.vo;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.util.List;Data
AllArgsConstructor
NoArgsConstructor
public class Catelog2Vo {/*** 一级父分类的id*/private String catalog1Id;/*** 三级子分类*/private ListCategory3Vo catalog3List;private String id;private String name;/*** 三级分类vo*/DataAllArgsConstructorNoArgsConstructorpublic static class Category3Vo {/*** 父分类、二级分类id*/private String catalog2Id;private String id;private String name;}}二后台接口
后台接口实现并不难关键在于理解响应体的结构根据结构进行封装。
Overridepublic MapString, ListCatelog2Vo getCatalogJson() {System.out.println(查询了数据库);//将数据库的多次查询变为一次ListCategoryEntity selectList this.baseMapper.selectList(null);//1、查出所有分类//1、1查出所有一级分类ListCategoryEntity level1Categorys getParentCid(selectList, 0L);//封装数据MapString, ListCatelog2Vo parentCid level1Categorys.stream().collect(Collectors.toMap(k - k.getCatId().toString(), v - {//1、每一个的一级分类,查到这个一级分类的二级分类ListCategoryEntity categoryEntities getParentCid(selectList, v.getCatId());//2、封装上面的结果ListCatelog2Vo catelog2Vos null;if (categoryEntities ! null) {catelog2Vos categoryEntities.stream().map(l2 - {Catelog2Vo catelog2Vo new Catelog2Vo(v.getCatId().toString(), null, l2.getCatId().toString(), l2.getName().toString());//1、找当前二级分类的三级分类封装成voListCategoryEntity level3Catelog getParentCid(selectList, l2.getCatId());if (level3Catelog ! null) {ListCatelog2Vo.Category3Vo category3Vos level3Catelog.stream().map(l3 - {//2、封装成指定格式Catelog2Vo.Category3Vo category3Vo new Catelog2Vo.Category3Vo(l2.getCatId().toString(), l3.getCatId().toString(), l3.getName());return category3Vo;}).collect(Collectors.toList());catelog2Vo.setCatalog3List(category3Vos);}return catelog2Vo;}).collect(Collectors.toList());}return catelog2Vos;}));return parentCid;}private ListCategoryEntity getParentCid(ListCategoryEntity selectList, Long parentCid) {ListCategoryEntity categoryEntities selectList.stream().filter(item - item.getParentCid().equals(parentCid)).collect(Collectors.toList());return categoryEntities;}这段代码主要功能是从数据库中获取商品分类信息并将其组织成特定的数据结构返回。
整个过程可以概括为从数据库中获取所有分类信息然后根据分类的层级关系一级、二级、三级对这些信息进行分组和组织以便于前端展示或后续处理。
这种方法减少了对数据库的多次查询提高了性能。