前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java递归查询父节点_java递归例子

java递归查询父节点_java递归例子

作者头像
全栈程序员站长
发布2022-11-04 16:31:18
2.3K0
发布2022-11-04 16:31:18
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

一、需求

项目里要让用户能够设置所选择教材的章课节,以针对章课节提供相应的题目供用户做题。

设计:用户设置了教材后,首次登录,进行章节设置时。默认为用户选择第一章、第一课、第一节。

思路:用户访问页面,章一栏显示所有章,课一栏显示第一章下所有课程,节一栏显示第一章、第一课下的所有节。然后获取用户当前选择的章课节信息。如果当前用户没有设置过该教材的章课节,就为其设置默认的第一章、第一课、第一节。

数据库设计:此处将章课节所有信息存放到一张表中,可递归查询。最上一级章的parentid是教材的id。故给一个教材id便可以查找到其下所有的章课节信息。

二、解决

已设置的我们这里不讨论,只需要到库中查询对应的章课节即可。

那么对于默认第一章第一课第一节,我们这里使用一个递归函数将查询的结果存放到一个list中

/*** 根据给定的id,查询其下的第一课、第一节(不只适用于章课节三级,如果下面还有级别的目录,也可查

*

* 询出)

*

*@paraml    是教材id

*@paramlist

*@return

*/

public void getSubChapter(long l, Listlist) {

BookChapter c= null;

String sql= “SELECT D.chapter_id chapter_id, D .chapter_name chapter_name, D . LEVELS LEVELS FROM “

+ “( SELECT * FROM mic_study_book_chapter c WHERE c.parent_chapter_id =? ORDER BY c.code ) D WHERE ROWNUM = 1 “;

Object[] params={ l };try{

logger.info(sql.toString().replaceAll(“\\?”, “{}”), params);

List li = this.getJdbcTemplate().query(sql, params,newBookChapterRowMapper());if(li.size() != 0){

c= li.get(0);if (c != null) {

list.add(c);

getSubChapter(c.getId(), list);//递归查询

}

}

}catch(Exception e) {

logger.error(e.getMessage(),e);

}

}

递归查询的特点:函数方法自己掉用自己,通过某个条件判断跳出最后一个被调用的递归方法。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月18日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
日志服务
日志服务(Cloud Log Service,CLS)是腾讯云提供的一站式日志服务平台,提供了从日志采集、日志存储到日志检索,图表分析、监控告警、日志投递等多项服务,协助用户通过日志来解决业务运维、服务监控、日志审计等场景问题。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档