SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for sys_dept
-- ----------------------------
DROP TABLE IF EXISTS `sys_dept`;
CREATE TABLE `sys_dept` (`dept_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '部门名称',`parent_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '父级编号',`dept_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '部门名称',`sort` int(11) NULL DEFAULT NULL COMMENT '排序',`leader` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '负责人',`phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '联系方式',`email` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '邮箱',`status` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '部门状态',`create_by` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人',`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',`update_by` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '修改人',`update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间',`remark` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '备注',`address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '详细地址',PRIMARY KEY (`dept_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of sys_dept
-- ----------------------------
INSERT INTO `sys_dept` VALUES ('1', '0', '济南总公司', 1, '就眠仪式', '15553726531', 'pearadmin@gmail.com', '0', NULL, NULL, NULL, NULL, NULL, '山东济南');
INSERT INTO `sys_dept` VALUES ('10', '8', '设计部', 3, '就眠仪式', '15553726531', 'pearadmin@gmail.com', '0', NULL, NULL, NULL, NULL, NULL, '山东济南');
INSERT INTO `sys_dept` VALUES ('1316361008259792896', '1316360459930042368', '软件部', 1, '就眠仪式', '15553726531', 'pearadmin@gmail.com', '0', NULL, NULL, NULL, NULL, NULL, '山东济南');
INSERT INTO `sys_dept` VALUES ('1316361192645591040', '1316360459930042368', '市场部', 1, '就眠仪式', '15553726531', 'pearadmin@gmail.com', '0', NULL, NULL, NULL, NULL, NULL, '山东济南');
INSERT INTO `sys_dept` VALUES ('1377824449830584320', '3', '财务部', 1, '就眠仪式', '15553726531', '854085467@qq.com', '0', NULL, NULL, NULL, NULL, NULL, '山东济南');
INSERT INTO `sys_dept` VALUES ('1377825171905183744', '8', '财务部', 1, '就眠仪式', '15553726531', '854085467@qq.com', '0', NULL, NULL, NULL, NULL, NULL, '山东济南');
INSERT INTO `sys_dept` VALUES ('3', '1', '杭州分公司', 1, '就眠仪式', '15553726531', 'pearadmin@gmail.com', '0', NULL, NULL, NULL, NULL, NULL, '浙江杭州');
INSERT INTO `sys_dept` VALUES ('4', '2', '软件部', 2, '就眠仪式', '15553726531', 'pearadmin@gmail.com', '0', NULL, NULL, NULL, NULL, NULL, '山东济南');
INSERT INTO `sys_dept` VALUES ('5', '2', '市场部', 2, '就眠仪式', '15553726531', 'pearadmin@gmail.com', '0', NULL, NULL, NULL, NULL, NULL, '山东济南');
INSERT INTO `sys_dept` VALUES ('6', '3', '软件部', 3, '就眠仪式', '15553726531', 'pearadmin@gmail.com', '0', NULL, NULL, NULL, NULL, NULL, '浙江杭州');
INSERT INTO `sys_dept` VALUES ('7', '3', '设计部', 4, '就眠仪式', '15553726531', 'pearadmin@gmail.com', '0', NULL, NULL, NULL, NULL, NULL, '山东济南');
INSERT INTO `sys_dept` VALUES ('8', '1', '深圳分公司', 3, '就眠仪式', '15553726531', 'pearadmin@gmail.com', '0', NULL, NULL, NULL, NULL, NULL, '山东济南');
INSERT INTO `sys_dept` VALUES ('9', '8', '软件部', 3, '就眠仪式', '15553726531', 'pearadmin@gmail.com', '0', NULL, NULL, NULL, NULL, NULL, '山东济南');SET FOREIGN_KEY_CHECKS = 1;
org.springframework.boot spring-boot-starter cn.hutool hutool-all 5.8.6 mysql mysql-connector-java
说明:
使用 hutool 开源项目的 db 模块 , 快速进行数据库操作
创建数据库连接工具类
DataSourceInit.java
public class DataSourceInit {public static DataSource initDatasource(Class type,String driver ,String url,String user , String pass){DataSource build = DataSourceBuilder.create()// 设置为 mysql 数据源.type(type).driverClassName(driver).url(url).password(user).username(pass).build();return build;}public static DataSource initMySQLDatasource(String driver ,String url,String user ,String pass){DataSource build = DataSourceBuilder.create()// 设置为 mysql 数据源.type(MysqlDataSource.class).driverClassName(driver).url(url).password(user).username(pass).build();return build;}
}
准备树形结构的类
package com.example.data;import cn.hutool.db.Db;
import cn.hutool.db.Entity;import javax.sql.DataSource;
import java.sql.SQLException;
import java.util.List;public class TreeDataByMysql {public static List getTreeData() throws SQLException {DataSource dataSource = DataSourceInit.initMySQLDatasource("jdbc:mysql://www.shaoming.club:3306/pear_admin", "jdbc:mysql://www.shaoming.club:3306/pear_admin","root", "root");Db db = Db.use(dataSource);List sysDeptList = db.findAll(Entity.create("sys_dept"), SysDept.class);return sysDeptList;}}
测试类
package com.example.test.tree;import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.lang.tree.TreeNodeConfig;
import cn.hutool.core.lang.tree.TreeUtil;
import cn.hutool.json.JSONUtil;
import com.example.data.SysDept;
import com.example.data.TreeDataByMysql;import java.sql.SQLException;
import java.util.List;public class TreeTest {public static void main(String[] args) throws SQLException {List treeData = TreeDataByMysql.getTreeData();//配置TreeNodeConfig treeNodeConfig = new TreeNodeConfig();// 改变子集的属性名称 , 有默认值 , 默认值为 children , 我们可以进行自定义treeNodeConfig.setChildrenKey("child");// 自定义属性名 都要默认值的treeNodeConfig.setWeightKey("sort");treeNodeConfig.setIdKey("deptId");// 最大递归深度treeNodeConfig.setDeep(3);//转换器List> treeNodes = TreeUtil.build(treeData, "0", treeNodeConfig,(treeNode, tree) -> {tree.setId(treeNode.getDeptId());tree.setParentId(treeNode.getParentId());tree.setWeight(treeNode.getSort());tree.setName(treeNode.getDeptName());// 扩展属性 ...tree.putExtra("extraField", "扩展字段");});System.out.println(JSONUtil.toJsonPrettyStr(treeNodes));System.out.println("---------------------------------------------------=============>");// hutool 官网的入门案例
// List> nodeList = CollUtil.newArrayList();
// nodeList.add(new TreeNode<>("1", "0", "系统管理", 5));
// nodeList.add(new TreeNode<>("11", "1", "用户管理", 222222));
// nodeList.add(new TreeNode<>("111", "11", "用户添加", 0));
// nodeList.add(new TreeNode<>("2", "0", "店铺管理", 1));
// nodeList.add(new TreeNode<>("21", "2", "商品管理", 44));
// nodeList.add(new TreeNode<>("221", "2", "商品管理2", 2));
// // 0表示最顶层的id是0
// List> treeList = TreeUtil.build(nodeList, "0");
// System.out.println(treeList);
// System.out.println(JSONUtil.toJsonPrettyStr(treeList));}
}
控制台打印
[
{
“deptId”: “1”,
“parentId”: “0”,
“sort”: -1,
“name”: “济南总公司”,
“extraField”: “扩展字段”,
“child”: [
{
“deptId”: “8”,
“parentId”: “1”,
“sort”: -3,
“name”: “深圳分公司”,
“extraField”: “扩展字段”,
“child”: [
{
“deptId”: “9”,
“parentId”: “8”,
“sort”: -3,
“name”: “软件部”,
“extraField”: “扩展字段”
},
{
“deptId”: “10”,
“parentId”: “8”,
“sort”: -3,
“name”: “设计部”,
“extraField”: “扩展字段”
},
{
“deptId”: “1377825171905183744”,
“parentId”: “8”,
“sort”: -1,
“name”: “财务部”,
“extraField”: “扩展字段”
}
]
},
{
“deptId”: “3”,
“parentId”: “1”,
“sort”: -1,
“name”: “杭州分公司”,
“extraField”: “扩展字段”,
“child”: [
{
“deptId”: “7”,
“parentId”: “3”,
“sort”: -4,
“name”: “设计部”,
“extraField”: “扩展字段”
},
{
“deptId”: “6”,
“parentId”: “3”,
“sort”: -3,
“name”: “软件部”,
“extraField”: “扩展字段”
},
{
“deptId”: “1377824449830584320”,
“parentId”: “3”,
“sort”: -1,
“name”: “财务部”,
“extraField”: “扩展字段”
}
]
}
]
}
]
---------------------------------------------------=============>