一、 数据库表结构

二、从后台读取数据库生成easyui tree结构的树

1、TreeNode树结点类(每个结点都包含easyui tree 的基本属性信息)

  1. import java.io.Serializable;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import java.util.Map;
  6.  
  7. public class TreeNode implements Serializable {
  8.  
  9. private String id;
  10. public String getId() {
  11. return id;
  12. }
  13. public void setId(String id) {
  14. this.id = id;
  15. }
  16. private String text;
  17. public String getText() {
  18. return text;
  19. }
  20. public void setText(String text) {
  21. this.text = text;
  22. }
  23. private String parentid;
  24. public String getParentid() {
  25. return parentid;
  26. }
  27. public void setParentid(String parentid) {
  28. this.parentid = parentid;
  29. }
  30.  
  31. private List<TreeNode> children = new ArrayList<TreeNode>();
  32. public List<TreeNode> getChildren() {
  33. return children;
  34. }
  35. public void setChildren(List<TreeNode> children) {
  36. this.children = children;
  37. }
  38.  
  39. private String iconCls;
  40. public String getIconCls() {
  41. return iconCls;
  42. }
  43. public void setIconCls(String iconCls) {
  44. this.iconCls = iconCls;
  45. }
  46.  
  47. private String state;//节点状态,'open' 或 'closed',默认:'open'。
  48. public String getState() {
  49. return state;
  50. }
  51. public void setState(String state) {
  52. this.state = state;
  53. }
  54.  
  55. private boolean checked;
  56. public boolean isChecked() {
  57. return checked;
  58. }
  59. public void setChecked(boolean checked) {
  60. this.checked = checked;
  61. }
  62.  
  63. private Map<String, Object> attributes = new HashMap<String, Object>();
  64. public Map<String, Object> getAttributes() {
  65. return attributes;
  66. }
  67. public void setAttributes(Map<String, Object> attributes) {
  68. this.attributes = attributes;
  69. }
  70.  
  71. }

2、用递归方法生成easyui tree 格式的json字符串

  1. public static TreeNode recursiveTree(String id) {
  2. // 根据id获取节点对象(SELECT * FROM ttree t WHERE t.id=?)
  3. TreeNode node = getTreeNode(id);
  4. // 查询id下的所有子节点(SELECT * FROM ttree t WHERE t.parentid=?)
  5. List<TreeNode> childTreeNodes = queryTreeNode(id);
  6. // 遍历子节点
  7. for (TreeNode child :childTreeNodes) {
  8. TreeNode n = recursiveTree(child.getId()); // 递归
  9. node.getChildren().add(n);
  10. }
  11. return node;
  12. }
  1. private static TreeNode getTreeNode(String id){
  2. TreeNode treeNode = null;
  3. Connection dbConn = getDbConnection();
  4. if(dbConn != null){
  5. try {
  6. String strSQL = "select * from ttree where id="+id;
  7. PreparedStatement pstmt = null;
  8. ResultSet rs = null;
  9. pstmt = dbConn.prepareStatement(strSQL);
  10. rs = pstmt.executeQuery();
  11. while (rs.next()) {
  12. treeNode = new TreeNode();
  13. treeNode.setId(rs.getString("id"));
  14. treeNode.setText(rs.getString("text"));
  15. treeNode.setParentid(rs.getString("parentid"));
  16. Map<String, Object> attributes = new HashMap<String, Object>();
  17. attributes.put("url",rs.getString("url"));
  18. treeNode.setAttributes(attributes);
  19. }
  20. rs.close();
  21. pstmt.close();
  22. dbConn.close();
  23. } catch (Exception e) {
  24. e.printStackTrace();
  25. }
  26. }
  27. return treeNode;
  28. }
  1. private static List<TreeNode> queryTreeNode(String id){
  2. List<TreeNode> arrList = new ArrayList<TreeNode>();
  3. Connection dbConn = getDbConnection();
  4. TreeNode treeNode = null;
  5. if(dbConn != null){
  6. try {
  7. String strSQL = "select * from ttree where parentid="+id;
  8. PreparedStatement pstmt = null;
  9. ResultSet rs = null;
  10. pstmt = dbConn.prepareStatement(strSQL);
  11. rs = pstmt.executeQuery();
  12. while (rs.next()) {
  13. treeNode = new TreeNode();
  14. treeNode.setId(rs.getString("id"));
  15. treeNode.setText(rs.getString("text"));
  16. treeNode.setParentid(rs.getString("parentid"));
  17. Map<String, Object> attributes = new HashMap<String, Object>();
  18. attributes.put("url",rs.getString("url"));
  19. treeNode.setAttributes(attributes);
  20. arrList.add(treeNode);
  21. }
  22. rs.close();
  23. pstmt.close();
  24. dbConn.close();
  25. } catch (Exception e) {
  26. e.printStackTrace();
  27. }
  28. }
  29. return arrList;
  30. }

3、测试调用(JSON.toJSONString方法是使用的fastjson.jar包中的方法功能很强大强烈推荐,可以在网上下载)

  1. public static void main(String[] args) {
  2. TreeNode node = recursiveTree("1");
  3. String jsonText = JSON.toJSONString(node, true);
  4. System.out.println(jsonText);
  5. }

4、输出结果

  1. {
  2. "attributes":{
  3. "url":"1"
  4. },
  5. "checked":false,
  6. "children":[{
  7. "attributes":{
  8. "url":"2"
  9. },
  10. "checked":false,
  11. "children":[
  12. {
  13. "attributes":{
  14. "url":"3"
  15. },
  16. "checked":false,
  17. "children":[],
  18. "id":"3",
  19. "parentid":"2",
  20. "text":"长沙"
  21. },
  22. {
  23. "attributes":{
  24. "url":"4"
  25. },
  26. "checked":false,
  27. "children":[],
  28. "id":"4",
  29. "parentid":"2",
  30. "text":"株洲"
  31. },
  32. {
  33. "attributes":{
  34. "url":"5"
  35. },
  36. "checked":false,
  37. "children":[],
  38. "id":"5",
  39. "parentid":"2",
  40. "text":"湘潭"
  41. },
  42. {
  43. "attributes":{
  44. "url":"6"
  45. },
  46. "checked":false,
  47. "children":[
  48. {
  49. "attributes":{
  50. "url":"7"
  51. },
  52. "checked":false,
  53. "children":[],
  54. "id":"7",
  55. "parentid":"6",
  56. "text":"岳阳县"
  57. },
  58. {
  59. "attributes":{
  60. "url":"http://192.168.1.1"
  61. },
  62. "checked":false,
  63. "children":[],
  64. "id":"8",
  65. "parentid":"6",
  66. "text":"华容县"
  67. },
  68. {
  69. "attributes":{
  70. "url":"9"
  71. },
  72. "checked":false,
  73. "children":[],
  74. "id":"9",
  75. "parentid":"6",
  76. "text":"湘阴县"
  77. }
  78. ],
  79. "id":"6",
  80. "parentid":"2",
  81. "text":"岳阳"
  82. }
  83. ],
  84. "id":"2",
  85. "parentid":"1",
  86. "text":"湖南"
  87. }],
  88. "id":"1",
  89. "parentid":"0",
  90. "text":"中国"
  91. }

写得很简单代码不是很规范,只是个测试demo。但功能很实用,希望对做web开发同学有些帮助。

从数据库读取数据并动态生成easyui tree构结的更多相关文章

  1. .Net Mvc 返回Json,动态生成EasyUI Tree

    最近做一个项目,开始接触EasyUI,感觉很强大,很适合我这种对前台不是很感冒的人.在学习Tree的过程中,感觉网上的资料挺乱的,很多只是把EasyUI API 抄了一遍.现在把最近这段时间的学到的, ...

  2. 10天学会phpWeChat——第三天:从数据库读取数据到视图

    在第二天,我们创建了我们的第一个phpWeChat功能模块,但是比较简单.实际生产环境中,我们不可能有如此简单的需求.更多的情况是数据存储在MySql数据库中,我们开发功能模块的作用就是将这些数据从M ...

  3. echarts通过ajax向服务器发送post请求,servlet从数据库读取数据并返回前端

    1.echarts的官网上的demo,都是直接写死的随机数据,没有和数据库的交互,所以就自己写了一下,ok,我们开始一步一步走一遍整个流程吧. 就以官网最简单的那个小demo来做修改吧.官网上的小de ...

  4. C#实现从数据库读取数据到Excel

    用第三方组件:NPOI来实现 先去官网:http://npoi.codeplex.com/下载需要引入dll(可以选择.net2.0或者.net4.0的dll),然后在网站中添加引用.使用 NPOI ...

  5. JMeter 参数化之利用JDBCConnectionConfiguration从数据库读取数据并关联变量

    参数化之利用DBC Connection Configuration从数据库读取数据并关联变量   by:授客 QQ:1033553122 1.   下载mysql jar包 下载mysql jar包 ...

  6. Android打开数据库读取数据

    打开数据库读取数据 private MyDatabaseHelper dbHelper; dbHelper=new MyDatabaseHelper(this,"List.db", ...

  7. .Net MVC 动态生成LayUI tree

    .Net MVC 动态生成LayUI tree 最近在做项目的过程中需要用到Tree插件,所以找了一堆Tree发现LayUI的Tree样式比较好看,所以开始搞! 1.Layui部分 1.1 首先引用文 ...

  8. silverlight 从数据库获取到数据,动态生成XMLWEN文件,并获取文件进行操作

    // Silverlight中的独立存储是其内部的可信任的可访问文件空间,在这里你可以使用Silverlight随意的创建.读取.写入.删除目录和文件,它有一些类似于Cookie,但是它可以在客户端保 ...

  9. Hibernate上传数据到数据库,从数据库读取数据到本地模板代码

    1.Hibernate上传数据到数据库: //创建一个session对象 Session session1=HibernateTools.getSession(); //Fenciresult数据库表 ...

随机推荐

  1. RecyclerView 实现横向滚动效果

    我相信很久以前,大家在谈横向图片轮播是时候,优先会选择具有HorizontalScrollView效果和ViewPager来做,不过自从Google大会之后,系统为我们提供了另一个控件Recycler ...

  2. iOS屏幕适配-iOS笔记

    学习目标 1.[了解]屏幕适配的发展史 2.[了解]autoResizing基本用法 3.[掌握]autoLayout 的基本用法 4.[掌握]autoLayout代码实现 5.[理解]sizeCla ...

  3. C++对象模型(四):class成员初始化列表(Member Initialization List)

    本文是Inside C++ Object Model Chapter 2 部分的读书笔记. 编译器如何处理初始化成员列表的. 下列情况中,必须要使用member initialization list ...

  4. 【一天一道LeetCode】#43. Multiply Strings

    一天一道LeetCode系列 (一)题目 Given two numbers represented as strings, return multiplication of the numbers ...

  5. 【Qt编程】Qt学习之状态栏

    QStatusBar类提供一个水平条来显示状态信息.所谓状态信息,拿个简单的例子来说,当你在word中编辑时,左下角就会出现页面.字数等等信息.状态信息可以分为三类:临时信息,如一般的提示信息:正常信 ...

  6. C# Oracle数据库操作类实例详解

    本文所述为C#实现的Oracle数据库操作类,可执行超多常用的Oracle数据库操作,包含了基础数据库连接.关闭连接.输出记录集.执行Sql语句,返回带分页功能的dataset .取表里字段的类型和长 ...

  7. Memcached学习笔记 — 第四部分:Memcached Java 客户端-gwhalin(1)-介绍及使用

     介绍 Memcached java client是官方推荐的最早的memcached java客户端.最新版本:java_memcached-release_2.6.1. 官方下载地址:http ...

  8. ITU-T E.800 有关服务质量(QoS)的术语定义

    摘要 ITU-T E.800建议书为服务质量(QoS)的研究和管理提供了一套通用术语.本建议书列出的与QoS相关的技术和非技术术语旨在代表电信市场所有各方(即用户.服务提供商.制造商和监管机构)的利益 ...

  9. 地产IT人福利:帆软地产BI解决方案全解析

    解决方案下载地址 帆软大型地产集团项目解决方案 下载地址:http://pan.baidu.com/s/1pJGeqKF帆软地产BI解决方案之KPI考核系统 下载地址:http://pan.baidu ...

  10. Python和shell中Base64编码使用那些事

    做开发第一个接触的编码方式就是Base64,当时是用url来传输一些参数,传输的两端会用Base64来编码和解码,保证数据不被url转义破坏. 下面是 维基百科 Base64 中的介绍,其实自己实现起 ...