java通过父节点来查询树形结构并返回json

分类列表

在这里插入图片描述
列表实体类:

@EqualsAndHashCode(callSuper = true)
@Data
@TableName("cms_category")
public class Category extends Model<Category> {
    
    

    /**
     *  类别表栏目ID
     */

    @ApiModelProperty(value = "类别表栏目ID")
    @TableId(value = "`id`",type = IdType.AUTO)
    private long id;

    /**
     * 父级栏目ID
     */
    @ApiModelProperty(value = "父级栏目ID")
    @TableField(value = "`pid`")
    private String pId;

    /**
     * 栏目名称
     */
    @ApiModelProperty(value = "栏目名称")
    @TableField(value = "`name`")
    private String name;


    /**
     * 是否启用(0 否 1 是)
     */
    @ApiModelProperty(value = "是否启用(0 否 1 是)")
    @TableField(value = "`is_enable`")
    private String isEnable;

    /**
     * 排序
     */
    @ApiModelProperty(value = "排序")
    @TableField(value = "`sort`")
    private String sort;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    @TableField(value = "`create_time`")
    private String createTime;

    /**
     * 子节点
     */
    @ApiModelProperty(value = "子节点")
    @TableField(exist = false)
    private List<Category> children;

}

controller层:

@RestController
@RequestMapping("/web/category")
@Api(tags = {
    
    "后台接口-文章分类相关接口"})
public class CategoryController {
    
    

    @Autowired
    CategoryService categoryService;

    @PostMapping(value = "getTree")
    @ApiOperation("查询树形结构")
    public CommonResult getTreeByPid() {
    
    
        List<Category> category= categoryService.getTree(0L);
        return CommonResult.success(category);

    }
}

service接口

public interface CategoryService extends IService<Category> {
    
    

    /**
     * 通过id来查找类别
     * @param id
     * @return
     */
    Category findByCategoryId(Long id);

    /**
     * 通过pId查询列表结构
     */
    List<Category> getTree(Long pId);
}

service实现类

@Service
public class CategoryServiceImpl extends ServiceImpl<CategoryMapper, Category> implements CategoryService {
    
    
    @Autowired
    CategoryMapper categoryMapper;

    @Override
    public Category findByCategoryId(Long id) {
    
    
        return categoryMapper.findByCategoryId(id);

    }

    @Override
    public List<Category> getTree(Long pId){
    
    
        QueryWrapper<Category> wrapper = new QueryWrapper<>();
        wrapper.eq("pid", pId);
        List<Category> list = categoryMapper.selectList(wrapper);
        for (Category category : list) {
    
    
            List<Category> children = getTree(category.getId());
            if (CollUtil.isEmpty(children)) {
    
    
                continue;
            }
            category.setChildren(children);
        }
        return list;
    }

}

主要是通过构造器查询查询一个列表,然后循环,递归的查找子节点,最终返回树形结构

猜你喜欢

转载自blog.csdn.net/weixin_42260782/article/details/109185180