我的数据表
实体类
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
public class ArchiveContents extends BaseDomain {
private static final long serialVersionUID = 1L;
/**
* 父目录id
*/
private Long parentId;
/**
* 目录名称
*/
private String coName;
}
一些属性在BaseDomain 中已经封装过了 所以在这里没有体现
定义vo类
@Data
public class ArchiveContentsVo implements Serializable {
private static final long serialVersionUID = 899690925735059393L;
/**
* 主键id
*/
private Long id;
/**
* 父目录id
*/
private Long parentId;
/**
* 目录名称
*/
private String coName;
/**
* 子目录
*/
private List<ArchiveContentsVo> childrenContents;
}
查询业务:
@Transactional
@Override
public List<ArchiveContentsVo> getContents() {
//得到所有目录
List<ArchiveContents> allContents = baseMapper.selectList(null);
ArrayList<ArchiveContentsVo> list = new ArrayList<>();
//筛选出一级目录
for (ArchiveContents allContent : allContents) {
if(allContent.getParentId()==0){
ArchiveContentsVo vo = new ArchiveContentsVo();
BeanUtil.copyProperties(allContent,vo);
list.add(vo);
}
}
//递归赋值
for (ArchiveContentsVo parentContents : list) {
List<ArchiveContentsVo> childrenContents = recursionContents(parentContents, allContents);
parentContents.setChildrenContents(childrenContents);
}
return list;
}
//递归
private List<ArchiveContentsVo> recursionContents(ArchiveContentsVo archiveContentsVo, List<ArchiveContents> allContents) {
//创建集合存储符合的子元素
ArrayList<ArchiveContentsVo> childrens = new ArrayList<>();
for (ArchiveContents children : allContents) {
if (children.getParentId()==archiveContentsVo.getId()){
ArchiveContentsVo vo = new ArchiveContentsVo();
BeanUtil.copyProperties(children,vo);
//加入集合
childrens.add(vo);
}
}
//递归出口 没有子孩子
if (childrens.size() == 0){
return null;
}
//将集合加入到当前父对象
archiveContentsVo.setChildrenContents(childrens);
//递归查找这个集合中的子元素
for (ArchiveContentsVo children : childrens) {
recursionContents(children,allContents);
}
return childrens;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/75431.html