欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

5.分类管理模块开发

程序员文章站 2022-03-15 20:54:38
...

功能介绍

获取节点
增加节点
修改名字
获取分类ID
递归子节点ID

学习目标

如何设计及封装无限层级的树状数据结构
递归算法的设计思想

 //递归算法,算出子节点
    private Set<Category> findChildCategory(Set<Category> categorySet ,Integer categoryId){
        Category category = categoryMapper.selectByPrimaryKey(categoryId);
        if(category != null){
            categorySet.add(category);
        }
        //查找子节点,递归算法一定要有一个退出的条件
        List<Category> categoryList = categoryMapper.selectCategoryChildrenByParentId(categoryId);
        for(Category categoryItem : categoryList){
            findChildCategory(categorySet,categoryItem.getId());
        }
        return categorySet;
    }

如何处理复杂对象排重–使用Set集合 并 重写equal和hashCode方法
重写hashcode和equal的注意事项

  @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Category category = (Category) o;

        return !(id != null ? !id.equals(category.id) : category.id != null);

    }

    @Override
    public int hashCode() {
        return id != null ? id.hashCode() : 0;
    }
}

数据表设计

id的parent_id代表他的父级分类
categoryId的默认值通过springmvc的requestparam注解进行控制。

接口设计

分类管理接口设计:https://gitee.com/imooccode/happymmallwiki