easyui 中 的同步树(3)------用递归写

来源:互联网 发布:缺月梧桐 知乎 编辑:程序博客网 时间:2024/06/16 01:21

以上两篇都只能显示有限的节点,如果想要在前台显示无限的节点,就需要用到递归了。这篇文章是基于上一篇的。

我的思路是:

  1. 先找出根节点

  2. 再递归根节点(递归结束的条件是:当此节点没有子节点时,结束递归)


1.数据库表设计和实体类和上一篇是一样的

2.看下DAO层和controller层
第一步:先取得根节点

    public List getAllTree() {        String hql = "from TAcademy where pid=(select min(pid) from TAcademy)";        Query query = sessionFactory.getCurrentSession().createQuery(hql);        return query.list();    }

第二步:遍历根节点

@RequestMapping("/__getAllTree")    public String __getAllTree(HttpServletRequest request,HttpServletResponse response)throws Exception{        List<TAcademy> tree = treeService.getAllTree();        List<TAcademy> allTree = digui(tree);        JSONArray jn = JSONArray.fromObject(allTree);        response.setContentType("text/html;charset=utf-8");        response.getWriter().println(jn.toString());        return null;    }    //递归形成专业树    public List digui(List<TAcademy> tree){        for (TAcademy academy : tree){            if(treeService.getAcademyByPid(academy.getId())!=null){                List<TAcademy> _tree = treeService.getAcademyByPid(academy.getId());                academy.setChildren(_tree);                digui(_tree);            }        }        return tree;    }

注意:其实不应该把数据库表中id设置问auto,如果设置成auto,那么就会在插入节点的时候出现问题。所以就在数据库中再增加一个字段。

0 0