Java递归方法实现面包屑导航

实现在详情页可以显示,该页面是西湖区的详情页,可以得到西湖区对应的id,在数据库中有一个parentId字段,对应父级数据,当parentId为空时,为最上级

bash 复制代码
中国 > 浙江 > 杭州 > 西湖区

通过西湖区的id去进行查询,是反向通过父级id来进行查询,

java 复制代码
//先传入目标节点id,和一个空集合list
//list用于存储获取到的全部目标节点及对应的父类数据
private void getList(Long destId,List<Dest> list){
	//如果传入的destId为空时,是最上级的内容,结束方法即可
	if(destId == null){
		return;
	}

	//通过当前id查询到该id对应的全部数据
	Dest dest = mapper.getDataById(destId);
	//list.add(dest);
	//在这里将数据存入到list中,即存的最小地区依次范围更大
	//如果需要倒序显示,可以使用方法Collections.reverse(list) 进行反序

	//继续调用本方法实现递归
	getList(dest.getParentId(),list);
	
	//在这里进行list.add 会先执行递归方法,当执行到最顶级时,进行每层存入,先存入的是最顶层的数据,因此无需再进行反序操作
	/*执行流程是这样的:
		从目标节点开始,一直向上递归找父节点
		直到最顶层父节点(parentId 为 null 时递归终止)
		递归返回时,‌最顶层父节点最先被 add‌
		然后逐层返回,子节点依次被 add */
	list.add(dest);
}
相关推荐
Zzzzmo_1 分钟前
SpringBoot 日志
java·spring boot·spring
hai_android5 分钟前
Android JNI 示例详解:Java 与 C++ 互调演示
android·java
geovindu6 分钟前
java: Strategy Pattern
java·开发语言·后端·设计模式·策略模式·行为模式
念越12 分钟前
Python基础语法(一):变量、类型与程序控制流
开发语言·网络·python
yimindev12 分钟前
从 BI 到 Agent:我如何用 Java 打造一个轻量级数据库语义网关 DatI
java
计算机毕设定制辅导-无忧学长15 分钟前
《基于SpringBoot的家政服务管理平台的设计与实现》
java·vue.js·spring boot·计算机毕业设计选题推荐·家政服务管理平台
秋饼16 分钟前
Spring AI 2.0 企业级文档ETL实战:从 DocumentReader 到 EmbeddingStore 的完整知识库数据管道
java·ai·技术分享·后端开发
吃饱了得干活19 分钟前
Spring Boot + Redis 分布式锁:一个订单重复提交引发的六次迭代
java·redis·后端
xiaoqiMikko21 分钟前
pom 里没有、代码里没调过,但 WebClient 默认用的就是 netty-resolver-dns
java·spring boot
wuminyu22 分钟前
Kafka的写入延迟与磁盘IO抖动原理分析
java·linux·c语言·jvm·c++