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);

}

}

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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • webstorm激活教程破解方法

    webstorm激活教程破解方法,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • 树莓派4B安装tensorflow2.0[通俗易懂]

    树莓派4B安装tensorflow2.0[通俗易懂]这个GitHub上可以下载到tensorflow2.x:https://github.com/lhelontra/tensorflow-on-arm/releases我就拿我下载的举例子吧:我下载的是这个版本的:tensorflow-2.0.0-cp37-none-linux_armv7l.whl1、把下载的这个tensorflow-2.0.0-cp37-none-linux_armv7l.whl文件放进树莓派里边,cd到你拖进的那一目录下(我是拖到Desktop,所以是:cdDesktop),命令行

  • maven本地仓库配置了不起作用_maven指定远程仓库地址

    maven本地仓库配置了不起作用_maven指定远程仓库地址来配置一下maven本地仓库:第一步:下载到官网下载maven包。下载地址:http://maven.apache.org/download.cgi第二步:找个盘符创建个文件夹将将下载的maven报放进去,然后将下载的包解压了。第三步:配置MAVEN_HOME的环境变量。如下:注意这个地方的变量值的路劲是你自己的实际maven解压后的路径。配置完上面的了,将MAVEN_HO…

  • sql语句查询中双引号怎么办_sql引号中加单引号

    sql语句查询中双引号怎么办_sql引号中加单引号

    以及SQL语句中日期格式的表示(#)、(”)
    在Delphi中进行字符变量连接相加时单引号用(”’),又引号用(””)表示
    首先定义变量
    var
    AnInt:integer=123;//为了方便在此都给它们赋初值。虽然可能在引赋初值在某
     
    些情况下不对
    AnIntStr:string=’456′;
    AStr:string=’abc’;
    AFieldName:string=’字符型编号

    2022年10月10日
  • POJ2965 状态压缩+BFS,DFS枚举,以及大牛的解法~

    POJ2965 状态压缩+BFS,DFS枚举,以及大牛的解法~

  • MVC三层架构的实现

    MVC三层架构的实现在MVC设计模式中认为,任何软件都可以分为三部分组成:1.控制程序流转的控制器Controller2.封装数据处理数据的模型Model3.负责展示数据的视图View在MVC设计思想中要求符合MVC设计思想的软件应该保证MVC这三部分相互独立,互不干扰,每一部分只负责自己擅长的部分。即某一个模块发生变化,应该尽量做到不影响其他两个模块,这样有利于后期的扩展和维护,代码也可复用…

发表回复

您的电子邮箱地址不会被公开。

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