树形节点 递归

树形节点大概如下,有任意多个父节点,每个父节点下有任意多个子节点,每个子节点下又有任意多个子节点,,,,,一次类推

如下图所示,我们怎么才能一次获得某个父节点下的所有子节点,或者是所有的节点呢。

说明:每一个节点都是对应数据库中的一条数据,每条数据有自己的id,也有父id,顶级父节点的父id为0

遍历的代码如下:先需要声明一个全局的list

[java] view plain copy
 
 print?
  1. public List<MqDepartmentPo> getAllChild(String id){  
  2.         List<MqDepartmentPo> list1 = mqDepartmentDao.findChild(id);//根据父节点的id查询  
  3.         for(MqDepartmentPo mp:list1){  对结果循环变量  
  4.             list.add(mp);//存放到一个全局的list中  
  5.             getAllChild(mp.getId());//对其子节点继续遍历,看是否包含子节点  
  6.         }  
  7.         return list;//最后放回存放所有节点对象的集合  
  8.     }//  说明: 如果要遍历全部的节点的话id传值为0  
[java] view plain copy
 
 print?
  1. <span style="white-space:pre">    </span>//下面就是查询数据库的代码了  
  2.     public List<MqDepartmentPo> findChild(String id) throws DataAccessException {  
  3.         StringBuffer sql = new StringBuffer();  
  4.         sql.append("SELECT * FROM mq_department_info WHERE parent_id="+id);  
  5.         return this.queryForList(sql.toString(), MqDepartmentPo.class);  
  6.     }  
原文地址:https://www.cnblogs.com/zhangwei99com/p/7524869.html