public class Tree {
public static void main(String[] str){
Map m = addMap();
search(m,0,0);
}
public static void search(Map m,int id,int level){
level++;
List l =findAllChild(id);
if(l.size()<=0)return;
for(int i=0;i<l.size();i++){
Tree t = (Tree)l.get(i);
List tl = (List)m.get(t);
getLength(level);
System.out.println(t.getName());
search(m,t.getId(),level);
}
}
public static void getLength(int it){
for(int i=0;i<it;i++){
System.out.print("-");
}
}
public static Map addMap(){
Map m = new HashMap();
List l = selectAllTree();
List list = new ArrayList();
for(int i=0;i<l.size();i++){
Tree tree = (Tree)l.get(i);
list = findAllChild(tree.getId());
m.put(tree,list);
}
return m;
}
public static List selectAllTree(){
Session s = HibernateSessionFactory.getSession();
String hql = "from Tree ";
Query q = s.createQuery(hql);
List l = q.list();
return l;
}
public static List findAllChild(int id){
Session s = HibernateSessionFactory.getSession();
String hql = "from Tree where pid=? ";
Query q = s.createQuery(hql);
q.setInteger(0, id);
List l = q.list();
return l;
}
结果
-广东省
--深圳市
---福田区
---南山区
---龙岗区
---宝安区
---盐田区
--广州市
---越秀区
---白云区
--东莞市
---长安镇
public static void main(String[] str){
Map m = addMap();
search(m,0,0);
}
public static void search(Map m,int id,int level){
level++;
List l =findAllChild(id);
if(l.size()<=0)return;
for(int i=0;i<l.size();i++){
Tree t = (Tree)l.get(i);
List tl = (List)m.get(t);
getLength(level);
System.out.println(t.getName());
search(m,t.getId(),level);
}
}
public static void getLength(int it){
for(int i=0;i<it;i++){
System.out.print("-");
}
}
public static Map addMap(){
Map m = new HashMap();
List l = selectAllTree();
List list = new ArrayList();
for(int i=0;i<l.size();i++){
Tree tree = (Tree)l.get(i);
list = findAllChild(tree.getId());
m.put(tree,list);
}
return m;
}
public static List selectAllTree(){
Session s = HibernateSessionFactory.getSession();
String hql = "from Tree ";
Query q = s.createQuery(hql);
List l = q.list();
return l;
}
public static List findAllChild(int id){
Session s = HibernateSessionFactory.getSession();
String hql = "from Tree where pid=? ";
Query q = s.createQuery(hql);
q.setInteger(0, id);
List l = q.list();
return l;
}
结果
-广东省
--深圳市
---福田区
---南山区
---龙岗区
---宝安区
---盐田区
--广州市
---越秀区
---白云区
--东莞市
---长安镇