【实战】如何生成多层级分类目录树

如何生成多层级目录树

1.实体类

@Data
@Entity
@AllArgsConstructor
@NoArgsConstructor
@Where(clause = "is_delete=0")
@Table(name = "site")
@Alias("Site")
@ApiModel("树形分类目录表")
@EqualsAndHashCode(callSuper = true)
public class Site extends AbstractBaseEntity {
   

    // 父级目录Id:没有为0
    private Long pId;

    // 父级目录名称:没有为“顶级”
    private String pName;

    // 当前目录名称
    private String currentName;

}

2.DTO输出类Vo,是封装好输出给前端的实体格式

@Data
@ApiModel("SiteVo")
public class SiteVo implements Serializable {
   

    private Long id;

    private Long pId;

    private String pName;

    private String currentName;

    // 子集:存储当前目录下的所有子集目录
    private List<SiteVo> sonSiteList;

    public static SiteVo getVoByEntity(Site entity) {
   
        SiteVo vo = new SiteVo();
        BeanUtils.copyProperties(entity, vo);
        return vo;
    }
    
}

3.使用Jpa组件,逻辑层就一个接口:返回所有目录信息

@Repository
public interface SiteRepository extends JpaRepository<Site, Long> {
   
}
public interface ISiteService {
   

    // 一次性返回所有-多层级目录树

    List<SiteVo> queryAll();

}

4.下面的逻辑层代码是最重要的:

@Transactional
@Service("ISiteService")
public class SiteServiceImpl implements ISiteService {
   

    @Autowired
    private SiteRepository repository;


    @Override
    public List<SiteVo> queryAll() {
   

        List<SiteVo> data = new ArrayList<>();   // 存放输出的数据
        // 1.获取全部数据
        List<Site> siteList = repository.findAll();
        if (StringUtils.isNotEmpty(siteList)) {
   
            // 将数据转化为Vo类
            List<SiteVo> siteVoList = siteList.stream().map(SiteVo::getVoByEntity).collect(Collectors.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值