• 从数据库读取数据并动态生成easyui tree构结


    一、 数据库表结构

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

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

    import java.io.Serializable;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    
    public class TreeNode implements Serializable  {
    
        private String id;
        public String getId() {
            return id;
        }
        public void setId(String id) {
            this.id = id;
        }
        private String text;
        public String getText() {
            return text;
        }
        public void setText(String text) {
            this.text = text;
        }
        private String parentid;
        public String getParentid() {
            return parentid;
        }
        public void setParentid(String parentid) {
            this.parentid = parentid;
        }
        
        private List<TreeNode> children = new ArrayList<TreeNode>();
        public List<TreeNode> getChildren() {
            return children;
        }
        public void setChildren(List<TreeNode> children) {
            this.children = children;
        }
        
        private String iconCls;
        public String getIconCls() {
            return iconCls;
        }
        public void setIconCls(String iconCls) {
            this.iconCls = iconCls;
        }
        
        private String state;//节点状态,'open' 或 'closed',默认:'open'。
        public String getState() {
            return state;
        }
        public void setState(String state) {
            this.state = state;
        }
        
        private boolean checked;
        public boolean isChecked() {
            return checked;
        }
        public void setChecked(boolean checked) {
            this.checked = checked;
        }
        
        private Map<String, Object> attributes = new HashMap<String, Object>();
        public Map<String, Object> getAttributes() {
            return attributes;
        }
        public void setAttributes(Map<String, Object> attributes) {
            this.attributes = attributes;
        }
    
        
        
    
        
        
    }

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

    public static TreeNode recursiveTree(String id) {
            // 根据id获取节点对象(SELECT * FROM ttree t WHERE t.id=?)
            TreeNode node = getTreeNode(id);
            // 查询id下的所有子节点(SELECT * FROM ttree t WHERE t.parentid=?)
            List<TreeNode> childTreeNodes = queryTreeNode(id);
            // 遍历子节点
            for (TreeNode child :childTreeNodes) {
                TreeNode n = recursiveTree(child.getId()); // 递归
                node.getChildren().add(n);
            }
            return node;
        }
    private static TreeNode getTreeNode(String id){
            TreeNode treeNode = null;
            Connection dbConn = getDbConnection();
            if(dbConn != null){
                try {
                    String strSQL = "select * from ttree where id="+id;
                    PreparedStatement pstmt = null;
                    ResultSet rs = null;
                    pstmt = dbConn.prepareStatement(strSQL);
                    rs = pstmt.executeQuery();
                    while (rs.next()) {
                        treeNode = new TreeNode();
                        treeNode.setId(rs.getString("id"));
                        treeNode.setText(rs.getString("text"));
                        treeNode.setParentid(rs.getString("parentid"));
                        Map<String, Object> attributes = new HashMap<String, Object>();
                        attributes.put("url",rs.getString("url"));
                        treeNode.setAttributes(attributes);
                    }
                    rs.close();
                    pstmt.close();
                    dbConn.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            return treeNode;
        }
    private static List<TreeNode> queryTreeNode(String id){
            List<TreeNode> arrList = new ArrayList<TreeNode>();
            Connection dbConn = getDbConnection();
            TreeNode treeNode = null;
            if(dbConn != null){
                try {
                    String strSQL = "select * from ttree where parentid="+id;
                    PreparedStatement pstmt = null;
                    ResultSet rs = null;
                    pstmt = dbConn.prepareStatement(strSQL);
                    rs = pstmt.executeQuery();
                    while (rs.next()) {
                        treeNode = new TreeNode();
                        treeNode.setId(rs.getString("id"));
                        treeNode.setText(rs.getString("text"));
                        treeNode.setParentid(rs.getString("parentid"));
                        Map<String, Object> attributes = new HashMap<String, Object>();
                        attributes.put("url",rs.getString("url"));
                        treeNode.setAttributes(attributes);
                        arrList.add(treeNode);
                    }
                    rs.close();
                    pstmt.close();
                    dbConn.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            return arrList;
        }

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

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

    4、输出结果

    {
        "attributes":{
            "url":"1"
        },
        "checked":false,
        "children":[{
            "attributes":{
                "url":"2"
            },
            "checked":false,
            "children":[
                {
                    "attributes":{
                        "url":"3"
                    },
                    "checked":false,
                    "children":[],
                    "id":"3",
                    "parentid":"2",
                    "text":"长沙"
                },
                {
                    "attributes":{
                        "url":"4"
                    },
                    "checked":false,
                    "children":[],
                    "id":"4",
                    "parentid":"2",
                    "text":"株洲"
                },
                {
                    "attributes":{
                        "url":"5"
                    },
                    "checked":false,
                    "children":[],
                    "id":"5",
                    "parentid":"2",
                    "text":"湘潭"
                },
                {
                    "attributes":{
                        "url":"6"
                    },
                    "checked":false,
                    "children":[
                        {
                            "attributes":{
                                "url":"7"
                            },
                            "checked":false,
                            "children":[],
                            "id":"7",
                            "parentid":"6",
                            "text":"岳阳县"
                        },
                        {
                            "attributes":{
                                "url":"http://192.168.1.1"
                            },
                            "checked":false,
                            "children":[],
                            "id":"8",
                            "parentid":"6",
                            "text":"华容县"
                        },
                        {
                            "attributes":{
                                "url":"9"
                            },
                            "checked":false,
                            "children":[],
                            "id":"9",
                            "parentid":"6",
                            "text":"湘阴县"
                        }
                    ],
                    "id":"6",
                    "parentid":"2",
                    "text":"岳阳"
                }
            ],
            "id":"2",
            "parentid":"1",
            "text":"湖南"
        }],
        "id":"1",
        "parentid":"0",
        "text":"中国"
    }

     

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

  • 相关阅读:
    【机器学习笔记】EM算法及其应用
    【机器学习笔记】循环神经网络RNN
    【caffe范例详解】
    Caffe on Windows (Visual Studio 2015+CUDA8.0+cuDNNv5)
    【Keras案例学习】 CNN做手写字符分类(mnist_cnn )
    Celery分布式文件队列
    通过nginx+lua或openresty实现web站点的waf功能
    使用docker hub获取kubernetes各个组件的镜像
    使用Ansible快速构建kubernetes1.10.4HA高可用集群
    创建私服maven服务
  • 原文地址:https://www.cnblogs.com/aegisada/p/5287802.html
Copyright © 2020-2023  润新知