多级目录的实现

若想要实现下图的效果:

 

 对应的后端代码应该如何写?(递归)

1.mapper

List<Category> selectCategoriesByParentId(Integer parentId);

 2.xml

  <select id="selectCategoriesByParentId" resultMap="BaseResultMap"
  parameterType="int">
    select
    <include refid="Base_Column_List"/>
    from imooc_mall_category
where parent_id=#{parentId}

  </select>

 3.service

List<CategoryVO> listCategoryForCustomer();

4.实现类

@Override
  public List<CategoryVO> listCategoryForCustomer() {
    ArrayList<CategoryVO> categoryVOList = new ArrayList<>();
    recursivelyFindCategories(categoryVOList, 0);
    return categoryVOList;
  }

  private void recursivelyFindCategories(List<CategoryVO> categoryVOList, Integer parentId) {
    //递归获取所有子类别,并组合成为一个“目录树”
    List<Category> categoryList = categoryMapper.selectCategoriesByParentId(parentId);
    if (!CollectionUtils.isEmpty(categoryList)) {
      for (int i = 0; i < categoryList.size(); i++) {
        Category category = categoryList.get(i);
        CategoryVO categoryVO = new CategoryVO();
        BeanUtils.copyProperties(category, categoryVO);
        categoryVOList.add(categoryVO);
        recursivelyFindCategories(categoryVO.getChildCategory(), categoryVO.getId());
      }
    }
  }

5.controller

@ApiOperation("前台目录列表")
@GetMapping("category/list")
@ResponseBody
public ApiRestResponse listCategoryForCustomer() {
    List<CategoryVO> categoryVOS = categoryService.listCategoryForCustomer();
    return ApiRestResponse.success(categoryVOS);
}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值