java复杂树形图_java树形图 代码

树返回的格式是

layui.tree({

elem: '#demo' //传入元素选择器

,nodes: [{ //节点

name: '父节点1'

,children: [{

name: '子节点11'

},{

name: '子节点12'

}]

},{

name: '父节点2(可以点左侧箭头,也可以双击标题)'

,children: [{

name: '子节点21'

,children: [{

name: '子节点211'

}]

}]

}]

});

首先我们我们把nodes封装成他所需要的格式: 直接上代码

public class TreeNode {

private String id;// 绑定节点的标识值。

private String name;// 显示的节点文本。

private String iconCls;// 显示的节点图标CSS类ID

private String version;//版本

private String state;// 节点状态,'open' 或 'closed'

private List children;// 子节点

//下面这几个属性是我需要的就封装进去啦(你们可以不封装进去)

private boolean module; //是否事项目

private String projectId; //项目Id

private String projectName;

get() set()....

}

下面是控制器的代码controller

/**

* 展示项目树

*

* */

@RequestMapping(value="selectModuleTree",produces = "application/json; charset=utf-8")

@ResponseBody

public List selectModuleTree(){

List treeList = moduleConfigService.selectModuleTree();

return treeList;

}

然后servletImpl的

@Override

public List selectModuleTree() {

List> treeList = baseModuleConfigDao.selectModuleTree();

//ruturn 掉下面的方法

return getChildrenNodeModelue(treeList);

}

public List getChildrenNodeModelue(List> nodes) {

List nodeList = new ArrayList();

for (Map node : nodes) {

TreeNode treeNode = new TreeNode();

// 标识符

treeNode.setId(node.get("MODULE_ID").toString());

// 显示文本

treeNode.setName(node.get("NAME").toString());

//是否是模板

treeNode.setModule(false);

//项目Id

/*treeNode.setProjectId(node.get("PROJECT_ID").toString());*/

// 获取子节点

List> childrenNode = baseModuleConfigDao

.selectModulModul(node.get("MODULE_ID").toString());

treeNode.setState("open");

// 有子节点,获取子节点的下级节点

if (childrenNode.size() > 0) {

//寻找节点调自己方法

List childrenlist = getChildrenNodeModelue(childrenNode);

treeNode.setChildren(childrenlist);

} else {

}

nodeList.add(treeNode);

}

return nodeList;

}

mapping中映射查询的值 BaseModuleConfigMapper.xml

SELECT * FROM tbl_base_module_config WHERE PARENT_ID = '0'

SELECT

tc.*,

bp.PROJECT_NAME AS projectName

FROM tbl_base_module_config tc

LEFT JOIN tbl_base_project bp ON tc.PROJECT_ID = bp.PROJECT_ID

WHERE tc.PARENT_ID = #{parentId}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的Java代码示例,使用MySQL数据库来实现树形结构图。 1. 创建MySQL数据库表 在MySQL数据库中创建一个名为“tree”的表,包含以下字段: - id:节点的唯一标识符,类型为INT - name:节点的名称,类型为VARCHAR - parent_id:父节点的ID,类型为INT CREATE TABLE tree ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50), parent_id INT ); 2. 创建Java类 创建一个名为“TreeNode”的Java类,用于表示树节点。该类包含以下属性: - id:节点的唯一标识符,类型为int - name:节点的名称,类型为String - children:子节点列表,类型为List<TreeNode> public class TreeNode { private int id; private String name; private List<TreeNode> children; public TreeNode(int id, String name) { this.id = id; this.name = name; this.children = new ArrayList<>(); } // getter and setter methods omitted for brevity } 3. 实现树的构建方法 创建一个名为“buildTree”的静态方法,用于从MySQL数据库中读取数据并构建树结构。该方法使用递归算法实现。 public static TreeNode buildTree(Connection conn, int parentId) throws SQLException { String sql = "SELECT * FROM tree WHERE parent_id = ?"; PreparedStatement stmt = conn.prepareStatement(sql); stmt.setInt(1, parentId); ResultSet rs = stmt.executeQuery(); TreeNode parent = null; while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); TreeNode node = new TreeNode(id, name); if (parent == null) { parent = node; } else { parent.getChildren().add(node); } buildTree(conn, id); } return parent; } 4. 测试代码 在main方法中创建一个MySQL数据库连接,并调用buildTree方法构建树结构。 public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/test"; String user = "root"; String password = "password"; try (Connection conn = DriverManager.getConnection(url, user, password)) { TreeNode root = buildTree(conn, 0); // TODO: traverse the tree and display it } catch (SQLException e) { e.printStackTrace(); } } 上述代码中的TODO部分应该是遍历树并在控制台上显示它的代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值