springboot系统属性配置会覆盖自定义属性配置

树形结构通用工具类

准备数据

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;


测试准备

springboot项目

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.6</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
    </dependencies>

说明:

使用 hutool 开源项目的 db 模块 , 快速进行数据库操作

工具类

创建数据库连接工具类
DataSourceInit.java

public class DataSourceInit {
    public static DataSource initDatasource(
            Class<DataSource> 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<SysDept> 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<SysDept> 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<SysDept> treeData = TreeDataByMysql.getTreeData();

        //配置
        TreeNodeConfig treeNodeConfig = new TreeNodeConfig();
        // 改变子集的属性名称 , 有默认值 , 默认值为 children , 我们可以进行自定义
        treeNodeConfig.setChildrenKey("child");
        // 自定义属性名 都要默认值的 , 可以自定义概知 , 比如为 sortvalue
        treeNodeConfig.setWeightKey("sort");
        //treeNodeConfig.setWeightKey("sortvalue");        
        treeNodeConfig.setIdKey("deptId");
        // 最大递归深度
        treeNodeConfig.setDeep(3);

        //转换器
        List<Tree<String>> treeNodes = TreeUtil.build(treeData, "0", treeNodeConfig,
                (treeNode, tree) -> {
                    tree.setId(treeNode.getDeptId());
                    tree.setParentId(treeNode.getParentId());
                    // 可以按照比重从小到大排序
                    tree.setWeight(treeNode.getSort());
                    // 可以按照比重从大到小排序 , 把排序值变为负数 (-)
                    //tree.setWeight(-treeNode.getSort());
                    tree.setName(treeNode.getDeptName());
                    // 扩展属性 ...
                    tree.putExtra("extraField", "扩展字段");
                });

        System.out.println(JSONUtil.toJsonPrettyStr(treeNodes));
        System.out.println("---------------------------------------------------=============>");

        // hutool 官网的入门案例
//        List<TreeNode<String>> 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<Tree<String>> 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”: “扩展字段”
}
]
}
]
}
]
---------------------------------------------------=============>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值