树形结构数据库表查询封装为树形实体类

树形表结构如下

在这里插入图片描述
parent_id指向父级分类主键, 整体结构类似磁盘文件夹形式

业务处理

service接口, 继承mabatis-plus生成IService包含基本的curd方法
public interface ParentFlService  extends IService<TblParentFl> {
   	 List<TblParentFlVO> getFlList();
}
service实现类; 查询使用lamabda表达式语句查询列表
public class ParentFlServiceImpl  extends ServiceImpl<TblParentFlMapper,TblParentFl> implements ParentFlService {

    @Override
    public List<TblParentFlVO> getFlList() {

        LambdaQueryWrapper<TblParentFl> wrapper = new QueryWrapper<TblParentFl>().lambda()
                .eq(TblParentFl::getParentId, 0)
                .eq(TblParentFl::getInvalid, 0)
                .orderByDesc(TblParentFl::getScore);//lambda表达式; jdk1.8新特性;
        List<TblParentFlVO> parentList = CopyUtil.copyList(this.list(wrapper), TblParentFlVO.class);//父类列表查询; 只是一个简单的条件查询
        //查询子类类目
        List<TblParentFlVO> tblParentFlVOList = getChildCategory(parentList);//查询子类

        return tblParentFlVOList;
    }
     /**
     * 查询子类目
     * @param flVOS
     * @return List<MallCategoryVO>
     */
    private List<TblParentFlVO> getChildCategory(List<TblParentFlVO> flVOS) {

        List<TblParentFlVO> tblParentFlVOList = new ArrayList<>();//创建树形新的容器
        flVOS.forEach(mallCategoryVO -> {
                    //查询子类
                    LambdaQueryWrapper<TblParentFl> wrapper = new QueryWrapper<TblParentFl>().lambda()
                    .eq(TblParentFl::getParentId, mallCategoryVO.getId())
                    .eq(TblParentFl::getInvalid, 0)
                    .orderByDesc(TblParentFl::getScore);
                    List<TblParentFl> childList = this.list(wrapper);//查询二级
                    //赋值并递归调用
                    if (CollectionUtils.isNotEmpty(childList)) {//不为空时进行赋值存储操作,并且调用自身.参数为查询出的该list
                        List<TblParentFlVO> childListVO = CopyUtil.copyList(childList, TblParentFlVO.class);
                        mallCategoryVO.setChildList(childListVO);
                        //if (!mallCategoryVO.getParentId().equals(0L)){
                        getChildCategory(childListVO);
                    }
            tblParentFlVOList.add(mallCategoryVO);//回调之后进行装配
                }
        );

        return tblParentFlVOList;//循环结束返回
    }
}

最后生成tblParentFlVOList实体类类似于文件夹形式, childList为子类集合;
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值