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

java递归查询父节点_java递归例子一、需求项目里要让用户能够设置所选择教材的章课节,以针对章课节提供相应的题目供用户做题。设计:用户设置了教材后,首次登录,进行章节设置时。默认为用户选择第一章、第一课、第一节。思路:用户访问页面,章一栏显示所有章,课一栏显示第一章下所有课程,节一栏显示第一章、第一课下的所有节。然后获取用户当前选择的章课节信息。如果当前用户没有设置过该教材的章课节,就为其设置默认的第一章、第一课、第一节。数据库设计…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

一、需求

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

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

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

数据库设计:此处将章课节所有信息存放到一张表中,可递归查询。最上一级章的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);

}

}

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

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/192216.html原文链接:https://javaforall.net

(0)
上一篇 2026年1月16日 下午11:01
下一篇 2026年1月16日 下午11:43


相关推荐

  • mac如何安装pip_mac怎么卸载python

    mac如何安装pip_mac怎么卸载pythonmac下直接安装pip和卸载pip的方法如下:1、pip的安装:输入sudoeasy_installpip就可以安装pip了。验证pip安装是否成功:输入:pip结果找不到文件。尝试输入:pip3-V或者pip3则说明已经安装成功了。2、pip的卸载:输入命令:sudopipuninstallpip然后输入密码后如下图:输入y,回车。即要卸载pip,再次用pip-V或者pip显示已经找不到文件,即卸载成功了。卸载不再做图片演示。注意:输入p

    2022年10月7日
    5
  • fflush和fsync的联系和区别「建议收藏」

    fflush和fsync的联系和区别「建议收藏」1.提供者fflush是libc.a中提供的方法,fsync是系统提供的系统调用。2.原形fflush接受一个参数FILE*.fflush(FILE*);fsync接受的时一个Int型的文件描述符。fsync(intfd);3.功能fflush:是把C库中的缓冲调用write函数写到磁盘[其实是写到内核的缓冲区]。fsync:是把内核缓冲刷到磁盘上。c库

    2022年5月13日
    42
  • yeild关键字的理解

    yeild关键字的理解yeild 关键字的理解结合 Pythonyield 使用浅析文章与彻底理解 Python 中的 yield 以后有理解了在补充带有 yield 的函数在 Python 中被称之为 generator 生成器 1 求 Fibonacci 数列 deffab max n a b 0 0 1whilenmax printba b

    2026年3月18日
    2
  • safari搜索引擎建议需要打开吗_为什么safari用不了谷歌搜索

    safari搜索引擎建议需要打开吗_为什么safari用不了谷歌搜索在使用谷歌搜索引擎的时候会弹出如下页面怎么样才能一步到位,不去点击第二次?第一步:设置」-「Safari」中将默认搜索引擎改为Google第二步:设置地区为香港第三步:看效果

    2025年10月23日
    5
  • c语言逻辑运算符和逻辑表达式_逻辑运算符与或非

    c语言逻辑运算符和逻辑表达式_逻辑运算符与或非1.逻辑运算符及其运算规则(1)C语言提供三种逻辑运算符:&&逻辑与(相当于"同时")||逻辑或(相当于"或者&amp

    2025年8月23日
    4
  • 最好用的mysql 管理工具_汽车行业质量管理五大工具

    最好用的mysql 管理工具_汽车行业质量管理五大工具对于数据库运维人员来说,想要保证数据库在高效平稳的运行就有点像杂技演员在转盘子,需要灵活、专注、能快速做出反应、并且拥有冷静的头脑。数据库几乎是所有能够成功运行系统的核心。而数据库运维人员对组织的数据… 对于数据库运维人员来说,想要保证数据库在高效平稳的运行就有点像杂技演员在转盘子,需要灵活、专注、能快速做出反应、并且拥有冷静的头脑。数据库几乎是所有能够成功运行系统的核心。而数据库运维人员对组织的数据负责,能找到可依靠的工具来更加高效的管理数据库,并且轻松的维护日常的工作就变得格外重要。数据库运维人

    2022年8月22日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号