easyUI tree 树形json的递归转换
来源:互联网 发布:心理测试 软件 编辑:程序博客网 时间:2024/06/06 12:39
解决了一个问题,做个记录.这里主要是json的转换,然后才是显示到tree上.
环境是eclipse+Maven+SpringMVC+hiberlate+easyuI(相关配置略)
开始吧!
第一步,建立一个实体类,这个实体类要定义为树形结构
@Entity@Table(name = "departest")@DynamicInsert(true)@DynamicUpdate(true)public class Departest { private int id; private String text; private int depid; private List children=new ArrayList(); //绑定属性和表中的字段 @Id @Column(name = "de_id", unique = true,nullable = false, length = 64) public int getId() { return id; } public void setId(int id) { this.id = id; } @Column(name = "de_name", nullable = false, length = 64) public String getText() { return text; } public void setText(String text) { this.text = text; } @Column(name = "de_pid", nullable = false, length = 64) public int getDepid() { return depid; } public void setDepid(int depid) { this.depid = depid; } //不需要绑定字段 @Transient public List getChildren() { return children; } public void setChildren(List children) { this.children = children; }}
hibernate会根据注解自动建立一张表,说明一下 hibernate中 @Entity @Table 实体类中不可以随便添加与表字段不对应的get方法,如果有请加注解 @Transient,
@Transient表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性. 如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则,ORM框架默认其注解为@Basic
表的结构为:
第二步,在dao层写上要用到的方法
//TestDaoI.javapublic interface TestDaoI extends BaseDaoI<Departest>{}
//TestDaoImpl.java@Repositorypublic class TestDaoImpl implements TestDaoI { @Autowired private SessionFactory sessionFactory; /** * 获得当前事物的session * * @return org.hibernate.Session */ public Session getCurrentSession() { return this.sessionFactory.getCurrentSession(); } @Override public Departest get(String hql, Map<String, Object> params) { Query q = this.getCurrentSession().createQuery(hql); if (params != null && !params.isEmpty()) { for (String key : params.keySet()) { q.setParameter(key, params.get(key)); } } List<Departest> l = q.list(); if (l != null && l.size() > 0) { return l.get(0); } return null; } @Override public List<Departest> find(String hql, Map<String, Object> params) { Query q = this.getCurrentSession().createQuery(hql); if (params != null && !params.isEmpty()) { for (String key : params.keySet()) { q.setParameter(key, params.get(key)); } } return q.list(); }}
第三步,在Service层写上具体的查询方法
//TestServiceI.javapublic interface TestServiceI { //查找全部 public List<Departest> findAllTestList(); //查找一个 public Departest findTest(int deip); //查多个 public List<Departest> findTestList(int depid);}
//TestServiceImpl.java@Servicepublic class TestServiceImpl implements TestServiceI { @Autowired private TestDaoI testDao; @Override public List<Departest> findAllTestList() { List<Departest> tests=testDao.find("from Departest t"); return tests; } @Override public Departest findTest(int deid) { String hql="from Departest t where t.id=:deid"; Map<String, Object> params=new HashMap<>(); params.put("deid", deid); Departest test =testDao.get(hql, params); return test; } @Override public List<Departest> findTestList(int depid) { String hql="from Departest t where t.depid=:depid"; Map<String, Object> params=new HashMap<>(); params.put("depid", depid); List<Departest> tests =testDao.find(hql, params); return tests; }}
第四步,在Controller中执行操作,获得数据
@Controllerpublic class DepartController { /**测试**/ @Autowired private TestServiceI testService; @ResponseBody @RequestMapping("/testree") public List<Departest> Testree(){ List<Departest> tlist=new ArrayList<Departest>();//创建父节点集合 Departest tree=sdgTree(135064); //递归转换 tlist.add(tree); return tlist; } //递归转换 public Departest sdgTree(int deid){ Departest test=testService.findTest(deid);//查找子节点获取单个对象 List<Departest> testlist=testService.findTestList(deid);//查找以这个节点为父节点的所有对象 for(Departest child:testlist){ //遍历集合 Departest da=sdgTree(child.getId());//递归查找 test.getChildren().add(da); } return test; } /**测试**/}
通过递归把查出来的数据转换为树形结构,
到这里就差不多完成了,贴出前台的代码:
<script type="text/javascript"> //加载树 $('#treelog').tree({ //这里引用的相对路径 url : '${mainPath}/testree', checkbox:true, }); </script> <form id="treeForm" method="post"> <ul id="treelog"></ul> </form>
部署到服务器上,输入地址 …/testree
就可以了,最后上效果图:
注意:返回数据的时候要返回一个树的集合List< Departest >,开始提到的
解决了一个问题,就是这个,如果返回树Departest 的话,数据打印出来是正确的,但就是无法显示在tree上,切记.至于为什么会这样我还不知道,有知道的朋友可以告诉我,以后了解清楚了,会写上去的
阅读全文
1 0
- easyUI tree 树形json的递归转换
- easyUI 实现tree树形菜单json的处理
- 递归实现EasyUI中Tree的Json格式
- EasyUI Tree递归方式获取JSON
- easyui tree 的数据格式转换
- easyUI tree数据格式的转换
- tree 递归 树形菜单!
- Func递归Easyui Tree
- easyUI,递归tree
- .net 生成 easyui tree树的json
- 生成符合EasyUI-Tree的JSON数据
- easyUI构造满足tree要求的json
- Jquery easyUI 树形插件tree
- EasyUI之树形结构tree
- EasyUI之树形结构tree
- 将XML文件转换为easyui Tree结构json
- jQuery EasyUI详解-EasyUI树形控件tree
- EasyUI使用tree生成树形结构加载两次的问题
- dovecot + mysql
- 属性表集合
- 欢迎使用CSDN-markdown编辑器
- C# 访问修饰符internal的访问范围误区释疑
- 文件复制
- easyUI tree 树形json的递归转换
- PS技能
- Ubuntu 16.04安装java
- 由简入繁阐述socket 网络编程
- linux体系结构+linux内核结构+linux内核目录结构
- Largest Number
- 剑指offer——合并两个排序的链表__
- 搬运工整理之HoloLens你的一个HoloLens应用程序 02
- lucene操作