实现在详情页可以显示,该页面是西湖区的详情页,可以得到西湖区对应的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);
}