Java如何从数据库里读取一个树形表然后封装成list?
publicclassGroupTreeVo{privateLongid;privateStringtext;privateLongpid;privateList<Gro...
public class GroupTreeVo {
private Long id;
private String text;
private Long pid;
private List<GroupTreeVo> children;
}
这是vo类
前三个成员变量对应数据库的同名字段
这个树形结构的表的子节点数量无限制 现在的需求就是把每一个节点的子节点封装进children属性里 然后子节点的孙子节点继续封装进子节点的children里 直到没有子节点了
怎么整? 展开
private Long id;
private String text;
private Long pid;
private List<GroupTreeVo> children;
}
这是vo类
前三个成员变量对应数据库的同名字段
这个树形结构的表的子节点数量无限制 现在的需求就是把每一个节点的子节点封装进children属性里 然后子节点的孙子节点继续封装进子节点的children里 直到没有子节点了
怎么整? 展开
1个回答
展开全部
首先查询的时候最好按照id的大小排序,应该是越小的是父节点,越大的是子节点,升序
才好用下面的方法
Map <Long , GroupTreeVo> temp=new HashMap<Long,GroupTreeVo>();
读取数据库数据
循环拿出,每次一条记录,相当于一个GroupTreeVo对象
每次都new 一个GroupTreeVo,数据库赋值,并存储到temp中以ID为key,对象为Value
判断是否有pid,如果有从temp中拿出父节点,设置它的children.add,
循环结束,最后,拿到temp的第一个,应该就是父节点,里面包含N多children
才好用下面的方法
Map <Long , GroupTreeVo> temp=new HashMap<Long,GroupTreeVo>();
读取数据库数据
循环拿出,每次一条记录,相当于一个GroupTreeVo对象
每次都new 一个GroupTreeVo,数据库赋值,并存储到temp中以ID为key,对象为Value
判断是否有pid,如果有从temp中拿出父节点,设置它的children.add,
循环结束,最后,拿到temp的第一个,应该就是父节点,里面包含N多children
追问
亲一口
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询