hutool树形组件使用

今天做分类的时候需要用到的这个树形组件,顺便记录一下使用的方法,方便以后再次使用

hutool版本

<dependency>
     <groupId>cn.hutool</groupId>
     <artifactId>hutool-all</artifactId>
     <version>5.7.16</version>
</dependency>

实现的方法

public List<Tree<String>> findProductCats() {

        Set<Long> catIds = new HashSet<>();
        for (int i = 0; i < 888; i++) {
            catIds.add((long) RandomUtil.randomInt(1, 666));
        }
        
        // 查询分类信息(数据库查到的数据,这里的id是我自己随机生成的用于测试的)
        List<ProductCategory> catInfos = productCategoryMapper.selectList(new QueryWrapper<ProductCategory>().in("id", catIds));
        
		// 设置参数
        List<TreeNode<String>> collect = catInfos.stream().map(item ->
                new TreeNode<String>().setId(item.getId())
                .setName(item.getName())
                .setParentId(item.getParentId())
                .setWeight(item.getSort())).collect(Collectors.toList());
                
        // 配置
        TreeNodeConfig treeNodeConfig = new TreeNodeConfig();
        treeNodeConfig.setWeightKey("sort");
        treeNodeConfig.setIdKey("id");
        treeNodeConfig.setChildrenKey("childrenNode");
        // 最大递归深度
        treeNodeConfig.setDeep(3);

        return TreeUtil.build(collect, "0", treeNodeConfig,
                (treeNode, tree) -> {
                    tree.setId(treeNode.getId());
                    tree.setParentId(treeNode.getParentId());
                    tree.setWeight(treeNode.getWeight());
                    tree.setName(treeNode.getName());
                });
    }

实体类

@Data
public class ProductCategory {

    private String id;

    private String parentId;

    private String name;

    private Integer level;
    
    private Integer sort;
}

表结构

CREATE TABLE `product_category` (
  `id` varchar(20) NOT NULL COMMENT '分类id',
  `parent_id` varchar(20) DEFAULT NULL COMMENT '上级分类的编号:0表示一级分类',
  `name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '分类名称',
  `level` int(11) DEFAULT NULL COMMENT '分类级别:1->1级;2->2级',
  `sort` int(11) DEFAULT '0' COMMENT '排序',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=744 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='商品分类';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值