谷粒商城-分类维护-通过Java8 Stream API 获取商品三级分类数据
Posted 最小的帆也能远航
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了谷粒商城-分类维护-通过Java8 Stream API 获取商品三级分类数据相关的知识,希望对你有一定的参考价值。
@Data
@TableName("pms_category")
public class CategoryEntity implements Serializable
private static final long serialVersionUID = 1L;
/**
* 分类id
*/
@TableId
private Long catId;
/**
* 分类名称
*/
private String name;
/**
* 父分类id
*/
private Long parentCid;
/**
* 层级
*/
private Integer catLevel;
/**
* 是否显示[0-不显示,1显示]
*/
@TableLogic(value = "1", delval = "0")
private Integer showStatus;
/**
* 排序
*/
private Integer sort;
/**
* 图标地址
*/
private String icon;
/**
* 计量单位
*/
private String productUnit;
/**
* 商品数量
*/
private Integer productCount;
@JsonInclude(JsonInclude.Include.NON_EMPTY)
@TableField(exist = false)
private List<CategoryEntity> children;
public List<CategoryEntity> listWithTree()
//1、查出所有分类
List<CategoryEntity> entities = baseMapper.selectList(null);
//2、组装成父子的树形结构
//2.1)、找到所有的一级分类,给children设置子分类
return entities.stream()
// 过滤找出一级分类
.filter(categoryEntity -> categoryEntity.getParentCid() == 0)
// 处理,给一级菜单递归设置子菜单
.peek(menu -> menu.setChildren(getChildless(menu, entities)))
// 按sort属性排序
.sorted(Comparator.comparingInt(menu -> (menu.getSort() == null ? 0 : menu.getSort())))
.collect(Collectors.toList());
/**
* 递归查找所有菜单的子菜单
*/
private List<CategoryEntity> getChildless(CategoryEntity root, List<CategoryEntity> all)
return all.stream()
.filter(categoryEntity -> categoryEntity.getParentCid().equals(root.getCatId()))
.peek(categoryEntity ->
// 找到子菜单
categoryEntity.setChildren(getChildless(categoryEntity, all));
)
.sorted(Comparator.comparingInt(menu -> (menu.getSort() == null ? 0 : menu.getSort())))
.collect(Collectors.toList());
以上是关于谷粒商城-分类维护-通过Java8 Stream API 获取商品三级分类数据的主要内容,如果未能解决你的问题,请参考以下文章
第187天学习打卡(项目 谷粒商城29 品牌分类与级联更新 )
第190天学习打卡(项目 谷粒商城 32 销售属性维护 查询分组关联属性和删除关联)
第176天学习打卡(项目 谷粒商城 18 API三级分类 删除效果细化 新增效果)