一、需求

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

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

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

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

}

}

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

java递归查询_java递归查询方法相关推荐

  1. java content()_Java contentEquals() 方法 - Break易站

    Java contentEquals() 方法 Java String类 contentEquals() 方法用于将此字符串与指定的 StringBuffer 比较. 语法 public boolea ...

  2. java 类型参数_java – 通用方法类型参数

    您的两个问题都可以通过以下方式解答:这是Java语法.在Java语言中,参数化方法声明如下: [optional modifiers] [return type] foo() {} 它声明了一个名为T ...

  3. java replace( . )_Java replace() 方法

    Java replace() 方法 Java String类 replace() 方法通过用 newChar 字符替换字符串中出现的所有 oldChar 字符,并返回替换后的新字符串. 语法 publ ...

  4. JAVA min()_Java min()方法

    Java min()方法 min() 方法用于返回两个参数中的最小值. 语法 该方法有以下几种语法格式: double min(double arg1, double arg2) float min( ...

  5. java 参数传递_java中方法的参数传递机制

    无论是什么语言,要讨论参数传递方式,就得从内存模型说起,主要是我个人觉得从内存模型来说参数传递更为直观一些.闲言少叙,下面我们就通过内存模型的方式来讨论一下Java中的参数传递. 这里的内存模型涉及到 ...

  6. java content()_Java contentEquals() 方法

    全屏 Java contentEquals() 方法 contentEquals() 方法用于将将此字符串与指定的 StringBuffer 比较. 语法public boolean contentE ...

  7. 类与方法java讲解_Java中方法使用的深入讲解

    方法的使用 1.方法的基本用法 什么是方法,方法就是一个代码片段,类似于c/c++ 语言中的"函数". 1.1方法存在的意义: 是能够模块化的组织代码(当代码规模比较复杂的时候). ...

  8. java 正切_Java tan()方法

    Java tan()方法 tan() 方法用于返回指定double类型参数的正切值. 语法 doubletan(doubled) 参数 d -- 任何原生数据类型. 返回值 返回指定double类型参 ...

  9. java起名_java命名方法 | 学步园

    Java命名方法 1.骆驼(Camel)命名法:第一个字母小写,随后的每个单词的第一个字母大写.如:studentName 2.帕斯卡(Pascal)命名法:每一个单词的第一个字母都大写.如:Stud ...

最新文章

  1. DL之DNN之BP:神经网络算法简介之BP算法/GD算法之不需要额外任何文字,只需要八张图讲清楚BP类神经网络的工作原理
  2. php查看文件属性,文件目录属性及权限
  3. HTML基础(我的复习和学习过程)day-01
  4. 数据结构教程网盘链接_数据结构101:链接列表
  5. centos 7 Hadoop2.7.4完全分布式搭建(一)
  6. Qt文档阅读笔记-Qt4 Lower-Level API扩展Qt Applications(Qt4中Plugin的使用)解析与实例
  7. 程序员都在用什么高效率的工具?
  8. ORA-00904: NAME: 标识符无效
  9. linux下安装anconda
  10. QT窗口与Windows系统窗口之间关系和转换
  11. Oracle数据库:下载与安装图解
  12. c语言如何输出数组最大值和最小值,C语言输出数组中最大和次大的数
  13. 首款搭载国产龙芯 CPU 的域名服务器发布
  14. 什么是云备份,如何在教育行业正确使用云备份?
  15. 大数据埋点那些事儿,手机 APP 是不是在偷听我说话?
  16. 5G通信终端 5G通信设备 5G工业物联网
  17. 计算机应用基础操作题文档,《计算机应用基础》操作题
  18. 奇葩的公司,奇葩的现象
  19. Xilinx FPGA引脚官网以及导入Excel编辑
  20. 超详细的张飞硬件第六部电源开关读书笔记01

热门文章

  1. 记一次java代码连接orcal数据库查视图报 java.sql.SQLSyntaxErrorException: ORA-00942: 表或视图不存在
  2. python中with关键字详解
  3. html5 游戏转换为小游戏,HTML5小游戏转换成mobile应用
  4. 程序人生:老板要求“996工作制” 你该怎么办?
  5. A Review on Multi-Label Learning Algorithms.Min-Ling Zhang and Zhi-Hua Zhou(多标记学习算法综述,张敏灵,周志华)
  6. 氧传感器常见故障及处理办法
  7. 上传网页至阿里云服务器步骤
  8. 嫣然细语,魂梦与君同
  9. ziperello破解zip加密
  10. Linux bridge桥接两个VirtualBox虚拟网络