java递归查询父节点_java递归例子
一、需求
项目里要让用户能够设置所选择教材的章课节,以针对章课节提供相应的题目供用户做题。
设计:用户设置了教材后,首次登录,进行章节设置时。默认为用户选择第一章、第一课、第一节。
思路:用户访问页面,章一栏显示所有章,课一栏显示第一章下所有课程,节一栏显示第一章、第一课下的所有节。然后获取用户当前选择的章课节信息。如果当前用户没有设置过该教材的章课节,就为其设置默认的第一章、第一课、第一节。
数据库设计:此处将章课节所有信息存放到一张表中,可递归查询。最上一级章的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);
}
}
递归查询的特点:函数方法自己掉用自己,通过某个条件判断跳出最后一个被调用的递归方法。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
相关文章
- 死磕juc(五)volatile与Java内存模型
- MySQL字段类型如何转为java_Java JDBC中,MySQL字段类型到JAVA类型的转换
- db4o java,db4o Java版性能测试评估
- java jersey使用总结_jersey Java Jersey配置「建议收藏」
- 【说站】java RabbitMQ消息队列是什么
- 使用Java在Netbeans IDE上开发JavaFX的4个深坑总结,开发必看!
- 【错误记录】NDK 报错 java.lang.UnsatisfiedLinkError 的一种处理方案 ( 主应用与依赖库 Module 的 CPU 架构配置不匹配导致 )
- 【Java面试八股文宝典之SpringMVC篇】备战2023 查缺补漏 你越早准备 越早成功!!!——Day15
- java变量、常量
- mongodb分片技术_动力节点Java学院整理
- redis集合类型_动力节点Java学院整理
- redis发布和订阅_动力节点Java学院整理
- Java基础学习笔记二十 IO流详解编程语言
- Java创建二叉树并遍历的代码详解编程语言
- Linux下Java开发入门指南(linux下java开发)
- Java基础-流程控制详解编程语言
- Java 9增强的“菱形”语法
- Linux下Java编程之旅(linux执行java)
- MySQL驱动程序:Java集成简易操作(mysql的java驱动)
- 键值解决Java中Redis键值对过期问题(redisjava过期)
- 服务如何在Linux上快速关闭Java服务(linux关闭java)
- 如何在Linux系统中正确配置Java?(linux下配置java)
- 进程Linux下创建多个Java进程的简易方法(linux 多个java)
- Java与MySQL共同构建良好的数据表(java mysql 表)
- Java配置Oracle实现稳定的跨平台数据库连接(java配置oracle)
- 数据库以Java运行环境构建基于Oracle的数据库(java创建oracle)
- Java语言中链表和双向链表
- Java中的静态绑定和动态绑定详细介绍