springboot+mysql 查询出树形结构实现

数据库对应实体类
	一定要有下面注释的这俩id
	
public class CheckMainTree {
    private int id;
    private String h_check;
    private String h_uuid; //父级id
    private String m_uuid;//每个节点唯一标识id、
    private String checklist;
    private int ordernumber;
    private String remarks;
    private String m_createtime;
    private String level;
    private int child;
    private List<CheckMainTree> childChecl;
}


xml层:
    <resultMap type="com.trmoni.Entity.checklist.CheckMainTree" id="ChecklistMainTreeReMap">
        <id column="id" property="id"/>
        <result column="h_check" property="h_check"/>
        <result column="h_uuid" property="h_uuid"/>
        <result column="m_uuid" property="m_uuid"/>
        <result column="checklist" property="checklist"/>
        <result column="ordernumber" property="ordernumber"/>
        <result column="remarks" property="remarks"/>
        <result column="level" property="level"/>
        <result column="m_createtime" property="m_createtime"/>
        <result column="child" property="child"/>
    </resultMap>
    
 <select id="tree" resultMap="ChecklistMainTreeReMap" parameterType="CheckMainTree">
       SELECT h_check,h_uuid,m_uuid,checklist,ordernumber,remarks,m_createtime,level,child
        FROM check_list_main
    </select>

接口:
List<CheckMainTree> tree(CheckMainTree maintree);

Controller 处理
 /**
     * 菜单树
     */
    @CrossOrigin(origins = "*")
    @RequestMapping("/findTree")
    @ResponseBody
    public Map<String, Object> findTree() {
        try {
            CheckMainTree tree = new CheckMainTree();
            // 直接调用
            // 原始的数据
            List<CheckMainTree> rootMenu = checklistService.tree(tree);
            // 构建好的菜单树,第一层菜单的pid是null
            List<CheckMainTree> menuTree = this.buildMenuTree(rootMenu, "");
            return commonUtil.success(menuTree);
        }catch (Exception e){
            e.printStackTrace();
            log.error("树查询异常原因={}",e.getMessage());
            return commonUtil.error("树查询失败");
        }
    }

    /**
     * 递归查找子菜单
     *
     *            当前菜单id
     *            要查找的列表
     *
     *            pid 为父级id 也就是当前的 H_uuid
     *            M_uuid 为数的节点也就是唯一标识UUID
     *
     *
     * @return
     */
    private List<CheckMainTree> buildMenuTree(List<CheckMainTree> menuList, String pid) {
        List<CheckMainTree> treeList = new ArrayList<>();
        menuList.forEach(menu -> {
            if (Objects.equals(pid, menu.getH_uuid())) {
                menu.setChildChecl(buildMenuTree(menuList,menu.getM_uuid()));
                treeList.add(menu);
            }
        });
        return treeList;
    }


最后的json样式:
{
    "msg": "数据处理success!",
    "code": "200",
    "data": [
        {
            "id": 0,
            "h_check": null,
            "h_uuid": "",
            "m_uuid": "f8b0b161ef1b4da59e10ddcbeba68faa",
            "checklist": "内容1",
            "ordernumber": 1,
            "remarks": "备注1",
            "m_createtime": "2020-05-19 13:10:50",
            "level": "1",
            "child": 1,
            "childChecl": [
                {
                    "id": 0,
                    "h_check": "哈1",
                    "h_uuid": "f8b0b161ef1b4da59e10ddcbeba68faa",
                    "m_uuid": "fbaa3c925be94f8a9dd78c84cf105834s",
                    "checklist": "asd",
                    "ordernumber": 10,
                    "remarks": "bj",
                    "m_createtime": "2020-05-19 14:06:04",
                    "level": "2",
                    "child": 0,
                    "childChecl": []
                },
                {
                    "id": 0,
                    "h_check": "内容1-1",
                    "h_uuid": "f8b0b161ef1b4da59e10ddcbeba68faa",
                    "m_uuid": "fbaa3c925be94f8a9dd78c84cf105834",
                    "checklist": "asdsss",
                    "ordernumber": 20,
                    "remarks": "bj",
                    "m_createtime": "2020-05-19 14:06:04",
                    "level": "2",
                    "child": 1,
                    "childChecl": [
                        {
                            "id": 0,
                            "h_check": "asdsss",
                            "h_uuid": "fbaa3c925be94f8a9dd78c84cf105834",
                            "m_uuid": "53534d52d4dc48cc81b50755193463b7",
                            "checklist": "检查子项1",
                            "ordernumber": 1,
                            "remarks": "标记",
                            "m_createtime": "2020-05-20 11:04:10",
                            "level": "3",
                            "child": 0,
                            "childChecl": []
                        }
                    ]
                }
            ]
        },
        {
            "id": 0,
            "h_check": "",
            "h_uuid": "",
            "m_uuid": "af8987f372a9437bbf349d630ee807e1",
            "checklist": "内容2",
            "ordernumber": 33,
            "remarks": "bj",
            "m_createtime": "2020-05-19 16:34:38",
            "level": "1",
            "child": 1,
            "childChecl": [
                {
                    "id": 0,
                    "h_check": "内容2-1",
                    "h_uuid": "af8987f372a9437bbf349d630ee807e1",
                    "m_uuid": "fbaa3c925be94f8a9dd78c84cf1058sa",
                    "checklist": "asdsss",
                    "ordernumber": 230,
                    "remarks": "bj",
                    "m_createtime": "2020-05-19 14:06:04",
                    "level": "2",
                    "child": 0,
                    "childChecl": []
                },
                {
                    "id": 0,
                    "h_check": "内容2-2",
                    "h_uuid": "af8987f372a9437bbf349d630ee807e1",
                    "m_uuid": "b5b348ae7d9a4d96b4d3bcfa662eb93f",
                    "checklist": "大对",
                    "ordernumber": 32,
                    "remarks": "remarks",
                    "m_createtime": "2020-05-20 09:55:41",
                    "level": "2",
                    "child": 1,
                    "childChecl": [
                        {
                            "id": 0,
                            "h_check": "阿萨大",
                            "h_uuid": "b5b348ae7d9a4d96b4d3bcfa662eb93f",
                            "m_uuid": "b5b348ae7d9a4d96b4d3bcfa662eb456",
                            "checklist": "内容2-2-1",
                            "ordernumber": 1,
                            "remarks": "备注",
                            "m_createtime": "2020-05-20 09:55:41",
                            "level": "3",
                            "child": 0,
                            "childChecl": []
                        }
                    ]
                }
            ]
        }
    ]
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值