`
- 浏览:
9317 次
- 性别:
- 来自:
上海
-
Java+oracle树查询实现easyui中tree使用的json(转)
1.前端页面使用easyui的tree
<ul id="some_tree"></ul>
$("#some_tree").tree({
url:'/getTreeJsonData.action',
lines :true,
onClick :function(node){
//TODO : after click
}
});
2.创建TreeJson的dto
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import net.sf.json.JSONObject;
/**
* easui中的tree_data.json数据,只能有一个root节点
* [{
"id":1,
"text":"Folder1",
"iconCls":"icon-save",
"children":[{
"text":"File1",
"checked":true
}]
}]
* 提供静态方法formatTree(List<TreeJson> list) 返回结果
* TreeJson.formatTree(treeJsonlist) ;
* @author lwb
*
*/
public class TreeJson implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private String id ;
private String pid ;
private String text ;
private String iconCls ;
private String state ;
private String checked ;
private JSONObject attributes = new JSONObject() ;
private List<TreeJson> children = new ArrayList<TreeJson>() ;
/******** setter and getter **********/
public static List<TreeJson> formatTree(List<TreeJson> list) {
TreeJson root = new TreeJson();
TreeJson node = new TreeJson();
List<TreeJson> treelist = new ArrayList<TreeJson>();// 拼凑好的json格式的数据
List<TreeJson> parentnodes = new ArrayList<TreeJson>();// parentnodes存放所有的父节点
if (list != null && list.size() > 0) {
root = list.get(0) ;
//循环遍历oracle树查询的所有节点
for (int i = 1; i < list.size(); i++) {
node = list.get(i);
if(node.getPid().equals(root.getId())){
//为tree root 增加子节点
parentnodes.add(node) ;
root.getChildren().add(node) ;
}else{//获取root子节点的孩子节点
getChildrenNodes(parentnodes, node);
parentnodes.add(node) ;
}
}
}
treelist.add(root) ;
return treelist ;
}
private static void getChildrenNodes(List<TreeJson> parentnodes, TreeJson node) {
//循环遍历所有父节点和node进行匹配,确定父子关系
for (int i = parentnodes.size() - 1; i >= 0; i--) {
TreeJson pnode = parentnodes.get(i);
//如果是父子关系,为父节点增加子节点,退出for循环
if (pnode.getId().equals(node.getPid())) {
pnode.setState("closed") ;//关闭二级树
pnode.getChildren().add(node) ;
return ;
} else {
//如果不是父子关系,删除父节点栈里当前的节点,
//继续此次循环,直到确定父子关系或不存在退出for循环
parentnodes.remove(i) ;
}
}
}
}
3.使用oracle树查询,查询需要构建树的记录,转换成TreeJson对象
<typeAlias alias="treeJson" type="TreeJson"/>
<select id="queryATree" resultClass="treeJson" >
SELECT t.id,
t.text,
t.pid,
t.iconcls
FROM table t
start with t.pid= 0
connect by t.pid= prior t.id
ORDER SIBLINGS BY T.id
</select>
4.组合
oracle查询结果为List<TreeJson>,使用TreeJson对象的静态方法formatTree将其转换成前台需要的tree_data.json数据返回到前台
List<TreeJson> list = TreeJson.formatTree(dao.queryATree()) ;
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
spring mvc + mybatis + maven + easyui + oracle 数据库实现增删改查
OA项目,使用SSM框架开发,使用EASYUI前端AJAX的JSON传值实现,对数据进行合理封装。
java方法实现easyui得到树的json
完善的Spring+SpringMVC+Mybatis+easyUI后台管理系统(RESTful API+redis).zip 完善的Spring+SpringMVC+Mybatis+easyUI后台管理系统(RESTful API+redis).zip 完善的Spring+SpringMVC+Mybatis+easyUI后台管理系统...
spring mvc + mybatis + maven + easyui + oracle 数据库实现增删改查;有任何不懂的技术问题都可以联系我共同讨论
structs + ibatis + oracle + easyUI实现系统管理,含后台包,表结构
Maven+Spring+SpringMVC+Mybatis+Log4j+EasyUI1.3.2+Oracle实例
该系统能够方便满足相关人员的查询等操作,也能够提高高校教师教学辅导管理工作的效率,降低管理成本。系统框架采用主流的框架,可以二次开发和学习。 项目开发语言:Java语言,jdk8或者以上 项目开发工具:...
asp.net+Web+mvc4.0 EasyUI 最新 权限管理系统源码教程asp.net+Web+mvc4.0 EasyUI 最新 权限管理系统源码教程
maven构建项目,简单的struts2、spring、mybatis结构实现,页面展示用的easyui
基于MyBatis+servlet+EasyUI+Oracle完成的一个员工信息管理系统 基于MyBatis+servlet+EasyUI+Oracle完成的一个员工信息管理系统 基于MyBatis+servlet+EasyUI+Oracle完成的一个员工信息管理系统 基于MyBatis+servlet+...
基于Spring+SpringMVC+Mybatis+easyUI实现的后台管理系统,可用作管理系统开发模板 项目经过严格测试,确保可以运行! 功能简介 本项目实现了一个简单的后台管理系统,可以作为ssm项目学习的脚手架,主要包含以下...
采用SpringBoot+Shiro+MyBatis+EasyUI实现的一个进销存管理系统,适合web全栈学习,毕业设计,课设 项目经过严格测试,确保可以运行! # 企业级进销存管理系统 进销存管理系统,采用SpringBoot+Shiro+MyBatis+...
Struts+Spring+Mybatis+EasyUI(jQuery)注解案例。采用注解的方式跟踪代码依赖性,实现替代配置文件功能。里面包含了平时用的增删改查及分页,分页查询时用的是存储过程,提高了数据库的性能。代码简单、易懂。
基于spring+springMVC+mybatis+easyui技术实现的医药后台管理系统 项目描述 基于spring+springMVC+mybatis+easyui技术实现的医药管理系统 运行环境 jdk7+tomcat7+mysql+eclipse/IntelliJ IDEA+maven 项目技术...
SpringMVC+Hibernate +MySql+ EasyUI实现CRUD
1,shiro+hibernate4+spring3+easyui+fusioncharts部分bootstrap样式全注解零配置简单权限管理web项目 2,简单shiro权限管控 细度到按钮 3,安装方法按config.properties参数配置你的数据库 4,运行db.sql 5,把项目导入...
使用Maven+springmvc+mybatis+easyui+mysql的demo
ssm+shiro+layui+easyui实现的后台权限管理系统 项目描述 基于SSM+Shiro+Layui+Easyui实现的后台权限管理系统 丰富的代码注释会很方便于你的理解,清晰的代码层次会让你更清楚的明白企业级架构!希望能在有限的...