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

您所在的位置:网站首页 java制作课程表 怎么用springboot+mybatis plus实现树形结构查询

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

2023-05-25 16:23| 来源: 网络整理| 查看: 265

背景

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

使用场景

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

设计思路递归模型

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

idcodenameparent_code110000电脑0220000手机0310001联想笔记本10000410002惠普笔记本1000051000101联想拯救者1000161000102联想小新系列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 { /** * 主键ID */ @TableId(type = IdType.AUTO) private Integer id; /** * 编码 */ private String code; /** * 名称 */ private String name; /** * 父级编码 */ private String parentCode; /** * 子节点 */ @TableField(exist = false) private List childNode; }登录后复制

mybatis

mapper

public interface TreeTableMapper extends BaseMapper { /** * 获取树形结构数据 * * @return 树形结构 */ public List noteTree(); }登录后复制

xml

id, code, `name`, parent_code select from tree_table where parent_code=#[code] select from tree_table where parent_code="0" 登录后复制

noteTree :获取所有父级节点数据;

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

column:关联表的列名;

ofType:返回类型

启动类

@Slf4j @Component public 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添加以下配置:

src/main/resources true src/main/java **/*.xml 登录后复制

以上就是怎么用springboot+mybatis plus实现树形结构查询的详细内容,更多请关注php中文网其它相关文章!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3