返回顶部
首页 > 资讯 > 精选 >springboot+mybatis plus怎么实现树形结构查询
  • 925
分享到

springboot+mybatis plus怎么实现树形结构查询

2023-06-20 17:06:56 925人浏览 八月长安
摘要

本篇内容介绍了“SpringBoot+mybatis plus怎么实现树形结构查询”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录背景使用

本篇内容介绍了“SpringBoot+mybatis plus怎么实现树形结构查询”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

目录
  • 背景

  • 使用场景

  • 设计思路

  • 实现代码

    • 注意事项

      • 总结

        背景

        实际开发过程中经常需要查询节点树,根据指定节点获取子节点列表,以下记录了获取节点树的操作,以备不时之需。

        使用场景

        可以用于系统部门组织机构、商品分类、城市关系等带有层级关系的数据结构

        设计思路

        递归模型

        即根节点、枝干节点、叶子节点,数据模型如下:

        idcodenameparent_code
        110000电脑0
        220000手机0
        310001联想笔记10000
        410002惠普笔记本10000
        51000101联想拯救者10001
        61000102联想小新系列10001

        实现代码

        表结构

        CREATE TABLE `tree_table` (  `id` int NOT NULL AUTO_INCREMENT COMMENT '主键ID',  `code` varchar(10) NOT NULL COMMENT '编码',  `name` varchar(20) NOT NULL COMMENT '名称',  `parent_code` varchar(10)  NOT NULL COMMENT '父级编码',  PRIMARY KEY (`id`) USING BTREE) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='树形结构测试表';

        表数据

        INSERT INTO `tree_table`(`code`, `name`, `parent_code`) VALUES ('10000', '电脑', '0');INSERT INTO `tree_table`(`code`, `name`, `parent_code`) VALUES ('10001', '联想笔记本', '10000');INSERT INTO `tree_table`(`code`, `name`, `parent_code`) VALUES ('10002', '惠普笔记本', '10000');INSERT INTO `tree_table`(`code`, `name`, `parent_code`) VALUES ('1000101', '联想拯救者', '10001');INSERT INTO `tree_table`(`code`, `name`, `parent_code`) VALUES ('1000102', '联想小新系列', '10001');

        实体

        @Data@TableName("tree_table")@EqualsAndHashCode(callSuper = false)@Accessors(chain = true)public class TreeTable {        @TableId(type = IdType.AUTO)    private Integer id;        private String code;        private String name;        private String parentCode;        @TableField(exist = false)    private List<TreeTable> childnode;}

        mybatis

        mapper

        public interface TreeTableMapper extends BaseMapper<TreeTable> {        public List<TreeTable> noteTree();}

        xml

        <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "Http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.springboot.example.mysqltree.mapper.TreeTableMapper">    <resultMap id="BaseResultMap" type="com.springboot.example.Mysqltree.model.entity.TreeTable">        <result column="id" property="id"/>        <result column="code" property="code"/>        <result column="name" property="name"/>        <result column="parent_code" property="parentCode"/>    </resultMap>    <resultMap id="NodeTreeResult" type="com.springboot.example.mysqltree.model.entity.TreeTable"               extends="BaseResultMap">        <collection property="childNode" column="code" ofType="com.springboot.example.mysqltree.model.entity.TreeTable"                    javaType="java.util.ArrayList" select="nextNoteTree">        </collection>    </resultMap>    <sql id="Base_Column_List">                id,                code,                `name`,                parent_code    </sql>       <select id="nextNoteTree" resultMap="NodeTreeResult">        select        <include refid="Base_Column_List"/>        from tree_table        where parent_code=#[code]    </select>    <select id="noteTree" resultMap="NodeTreeResult">        select        <include refid="Base_Column_List"/>        from tree_table        where parent_code='0'    </select></mapper>
        • noteTree :获取所有父级节点数据;

        • nextNoteTree:循环获取子节点数据,知道叶子节点结束;

        • column:关联表的列名;

        • ofType:返回类型

        启动类

        @Slf4j@Componentpublic class TreeTableCommandLineRunner implements CommandLineRunner {    @Resource    private TreeTableMapper treeTableMapper;    @Override    public void run(String... args) throws Exception {        log.info(JSONUtil.tojsonPrettyStr(treeTableMapper.noteTree()));    }}

        最终效果

        [    {        "code": "10000",        "childNode": [            {                "code": "10001",                "childNode": [                    {                        "code": "1000101",                        "childNode": [                        ],                        "parentCode": "10001",                        "name": "联想拯救者",                        "id": 5                    },                    {                        "code": "1000102",                        "childNode": [                        ],                        "parentCode": "10001",                        "name": "联想小新系列",                        "id": 6                    }                ],                "parentCode": "10000",                "name": "联想笔记本",                "id": 3            },            {                "code": "10002",                "childNode": [                ],                "parentCode": "10000",                "name": "惠普笔记本",                "id": 4            }        ],        "parentCode": "0",        "name": "电脑",        "id": 1    }]

        注意事项

        使用mybatis时如加载不到mapper xml需在pom.xml添加以下配置:

        <resources>    <resource>        <directory>src/main/resources</directory>        <filtering>true</filtering>    </resource>    <resource>        <directory>src/main/java</directory>        <includes>            <include>**/*.xml</include>        </includes>    </resource></resources>

        总结

        使用递归方式是比较常见的方式,优点是实现简单,直观的体现层级关系,但是数据量大的情况下效率会略低;欢迎使用其他方式的小伙伴分享自己的实现思路。

        “springboot+mybatis plus怎么实现树形结构查询”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

        --结束END--

        本文标题: springboot+mybatis plus怎么实现树形结构查询

        本文链接: https://lsjlt.com/news/298579.html(转载时请注明来源链接)

        有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

        猜你喜欢
        • springboot+mybatis plus实现树形结构查询
          目录背景 使用场景 设计思路 递归模型 实现代码 注意事项 总结 背景 实际开发过程中经常需要查询节点树,根据指定节点获取子节点列表,以下记录了获取节点树的操作,以备不时之需。 使...
          99+
          2024-04-02
        • springboot+mybatis plus怎么实现树形结构查询
          本篇内容介绍了“springboot+mybatis plus怎么实现树形结构查询”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录背景使用...
          99+
          2023-06-20
        • SpringBoot+MyBatisPlus+MySQL8实现树形结构查询
          本文实例为大家分享了SpringBoot+MyBatisPlus+MySQL8实现树形结构查询,供大家参考,具体内容如下 场景: 今天在实现权限功能模块时,需要将查询的权限数据,以树...
          99+
          2024-04-02
        • 树形结构查询
          提示:以下内容仅供参开 文章目录 前言一、需求场景二、数据库表三.实现方式1.方式1:2.方式2: 总结 前言 提示: 提示:以下是本篇文章正文内容,下面案例可供参考 一、需...
          99+
          2023-09-05
          mybatis java mysql
        • 如何使用SpringBoot+MyBatisPlus+MySQL8实现树形结构查询
          这篇文章主要为大家展示了“如何使用SpringBoot+MyBatisPlus+MySQL8实现树形结构查询”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用SpringBoot+MyBat...
          99+
          2023-06-15
        • sqlserver中怎么实现树形结构递归查询
          本篇文章为大家展示了sqlserver中怎么实现树形结构递归查询,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。公用表表达式(CTE),是一个在查询中定义的临时命名结...
          99+
          2024-04-02
        • oracle+mybatis-plus+springboot怎么实现分页查询
          本篇内容主要讲解“oracle+mybatis-plus+springboot怎么实现分页查询”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“oracle+mybatis-plus+springb...
          99+
          2023-06-20
        • springboot构造树形结构数据并查询的方法
          因为项目需要,页面上需要树形结构的数据进行展示(类似下图这样),因此需要后端返回相应格式的数据。 不说废话,直接开干!!! 我这里用的是springboot+mybatis-pl...
          99+
          2024-04-02
        • 怎么在Oracle中实现递归树形结构查询功能
          这篇文章给大家介绍怎么在Oracle中实现递归树形结构查询功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。oracle树状结构查询即层次递归查询,是sql语句经常用到的,在实际开发中...
          99+
          2024-04-02
        • springboot构造树形结构数据并查询的方法是什么
          本篇内容主要讲解“springboot构造树形结构数据并查询的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“springboot构造树形结构数据并查询的方法是什么”吧!因为项目需要,页...
          99+
          2023-06-25
        • mysql递归查询树形结构怎么应用
          在MySQL中实现递归查询树形结构可以使用递归查询语句(Recursive Query Statement)或者使用存储过程来实现。...
          99+
          2023-10-25
          mysql
        • Mybatis Plus关联查询怎么实现
          本篇内容介绍了“Mybatis Plus关联查询怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Mybatis-Plus 简介什么是 ...
          99+
          2023-06-22
        • oracle+mybatis-plus+springboot实现分页查询的实例
          今天蠢了一上午才弄出这玩意,话不多说上代码! 1、建一个配置类 package com.sie.demo.config; import com.baomidou.mybati...
          99+
          2024-04-02
        • Qt QTreeWidget树形结构怎么实现
          本篇内容介绍了“Qt QTreeWidget树形结构怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Qt中实现树形结构可以使...
          99+
          2023-06-21
        • SpringBoot、mybatis返回树结构的数据实现
          公司有个业务需要查出所有的用户权限分类,并将最后一层类别所包含的权限查出来。 数据库说明,有一个parent_id 字段是最好的:、 parent_id的值就是上级的id,一般的...
          99+
          2024-04-02
        • MySQL如何实现查询树结构
          这篇文章给大家分享的是有关MySQL如何实现查询树结构的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。MySQL 查询树结构1. 关于树结构此类结构的数据,通常需要表结构中含有id 、parentId等自关联字段,...
          99+
          2023-06-22
        • mybatis plus实现条件查询
          目录一、wapper介绍二、常用的条件方法1. gt 表示 >2. le 表示 <=3. lt&nb...
          99+
          2024-04-02
        • MyBatis-Plus中SimpleQuery查询实现
          对list查询后的结果用Stream流进行了一些封装,使其可以返回一些指定结果,简洁了api的调用,这种调用方式不用注入bean、不用注入bean、不用注入bean,通过实体类cla...
          99+
          2022-11-13
          MyBatis-Plus SimpleQuery查询 MyBatis-Plus SimpleQuery
        • Mybatis-Plus实现分页查询
          Mybatis-Plus实现分页查询 文章目录 Mybatis-Plus实现分页查询1.1技术概述1.2技术详述1.2.1配置分页插件1.2.2自定义分页1、如果你的mapper没有继承BaseMapper2、如果你的mapper继...
          99+
          2023-08-17
          mybatis java spring boot
        • oracle表中树形结构与分级查询
          1.此处以emp表为例 此表中 empno 字段与 mgr 字段存在 下级与上级关系 2从上往下查 最顶级的boss 此处的level是三大伪列之一 级别select level...
          99+
          2024-04-02
        软考高级职称资格查询
        编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
        • 官方手机版

        • 微信公众号

        • 商务合作