Mybatis实现树状结构查询
1、实体类
@Data
public class CourseChapterVO implements Serializable {
private static final long serialVersionUID = -67718827554034368L;
/**
* 主键ID
*/
private Integer id;
/**
* 课程ID
*/
private Integer courseId;
/**
* 课程章节名称
*/
private String chapterName;
/**
* 父ID
*/
private Integer chapterParent;
/**
* 层级
*/
private Integer chapterLevel; @JsonInclude(JsonInclude.Include.NON_EMPTY) //当children为空时不返回
private List<CourseChapterVO> children;
}
2、mapper.xml
<resultMap type="com.ruoyi.manager.vo.CourseChapterVO" id="CourseChapterMap2">
<result property="id" column="id" jdbcType="INTEGER"/>
<result property="courseId" column="course_id" jdbcType="INTEGER"/>
<result property="chapterName" column="chapter_name" jdbcType="VARCHAR"/>
<result property="chapterParent" column="chapter_parent" jdbcType="INTEGER"/>
<result property="chapterLevel" column="chapter_level" jdbcType="INTEGER"/>
<collection property="children" ofType="com.ruoyi.manager.vo.CourseChapterVO" column="id" select="selectListTree2"/>
</resultMap> <select id="selectListTree1" resultMap="CourseChapterMap2">
select id , course_id, chapter_name, chapter_parent, chapter_level
from course_chapter where chapter_parent =0 </select> <select id="selectListTree2" resultMap="CourseChapterMap2">
select id , course_id, chapter_name, chapter_parent, chapter_level from course_chapter where chapter_parent =#{id}
</select>
3、mapper.java
List<CourseChapterVO> selectListTree1(CourseChapter courseChapter);
4、serviceImpl.java
@Override
public List<CourseChapterVO> queryAll(CourseChapter courseChapter) {
return this.courseChapterMapper.selectListTree1(courseChapter);
}
5、service.java
List<CourseChapterVO> queryAll(CourseChapter courseChapter);
6、controller.java
@GetMapping("list")
public R queryAll(CourseChapter courseChapter) {
return R.data(this.courseChapterService.queryAll(courseChapter));
}
7、实现效果
{
"msg": "",
"code": 0,
"data": [
{
"id": 1,
"courseId": 5,
"chapterName": "第一章节学习",
"chapterParent": 0,
"chapterLevel": 1,
"children": [
{
"id": 2,
"courseId": 5,
"chapterName": "第一章节学习子1",
"chapterParent": 1,
"chapterLevel": 2
},
{
"id": 3,
"courseId": 5,
"chapterName": "第一章节学习子2",
"chapterParent": 1,
"chapterLevel": 2
},
{
"id": 4,
"courseId": 5,
"chapterName": "第一章节学习子3",
"chapterParent": 1,
"chapterLevel": 2
}
]
},
{
"id": 5,
"courseId": 5,
"chapterName": "第二章节学习",
"chapterParent": 0,
"chapterLevel": 1,
"children": [
{
"id": 6,
"courseId": 5,
"chapterName": "第二章节学习子",
"chapterParent": 5,
"chapterLevel": 2,
"children": [
{
"id": 9,
"courseId": 5,
"chapterName": "第二章节学习子1子1",
"chapterParent": 6,
"chapterLevel": 3
}
]
},
{
"id": 7,
"courseId": 5,
"chapterName": "第二章节学习子1",
"chapterParent": 5,
"chapterLevel": 2
},
{
"id": 8,
"courseId": 5,
"chapterName": "第二章节学习子2",
"chapterParent": 5,
"chapterLevel": 2
}
]
},
{
"id": 10,
"courseId": 5,
"chapterName": "第三章节学习gfdgdf",
"chapterParent": 0,
"chapterLevel": 1
}
]
}
Mybatis实现树状结构查询的更多相关文章
- PostgreSQL递归查询实现树状结构查询
在Postgresql的使用过程中发现了一个非常有意思的功能,就是对于须要相似于树状结构的结果能够使用递归查询实现.比方说我们经常使用的公司部门这样的数据结构.一般我们设计表结构的时候都是相似以下的S ...
- 浅谈oracle树状结构层级查询之start with ....connect by prior、level及order by
浅谈oracle树状结构层级查询 oracle树状结构查询即层次递归查询,是sql语句经常用到的,在实际开发中组织结构实现及其层次化实现功能也是经常遇到的,虽然我是一个java程序开发者,我一直觉得只 ...
- 浅谈oracle树状结构层级查询测试数据
浅谈oracle树状结构层级查询 oracle树状结构查询即层次递归查询,是sql语句经常用到的,在实际开发中组织结构实现及其层次化实现功能也是经常遇到的,虽然我是一个java程序开发者,我一直觉得只 ...
- 由简入繁实现Jquery树状结构
在项目中,我们经常会需要一些树状结构的样式来显示层级结构等,比如下图的样式,之前在学.net的时候可以直接拖个服务端控件过来直接使用非常方便.但是利用Jquery的一些插件,也是可以实现这些效果的,比 ...
- 使用Map辅助拼装树状结构,消除递归调用
目前菜单或其他树状结构在数据库中的存储,多数是以一个parentid作为关联字段,以一维形式存储.使用时全部查询出来,然后在内存中拼装成树状结构.现在主要涉及的是拼装方法的问题. 一般可以进行 递归调 ...
- 将lits集合转化为树状结构
一,bean的类型: public class DeptListRES { /** * 子节点 */ private List<DeptListRES> children; private ...
- 用Django ORM实现树状结构
前言 之前看对于用关系数据库实现树状结构的方法就知道一直做自关联的表,但是感觉自关联查询太慢了,最近看到一篇文章,感觉视野开拓了好多,文章:数据库表设计,没有最好只有最适合来自:微信. 下面就针对这里 ...
- JQuery 树状结构 jQuery-treeview.js 插件
由简入繁实现Jquery树状结构 在项目中,我们经常会需要一些树状结构的样式来显示层级结构等,比如下图的样式,之前在学.net的时候可以直接拖个服务端控件过来直接使用非常方便.但是利用Jquery的一 ...
- oracle存储过程删除树状结构的表数据
今天在删除一个车辆品牌表的时候,遇到了一个问题,是在java的代码中做逻辑删除还是直接在Oracle中一次删除完成呢 思来想去觉得还是在sql里直接删除比较合适, 为什么呢? 第一,涉及数据库的读写操 ...
- EntityFrameworkCore 单表树状结构配置
数据结构 public class TreeNode { [Key] public long Id { get; set; } public string NodeName { get; set; } ...
随机推荐
- pycharm安装appium,通过国内的镜像源安装python包,注意每次都要添加信任选项 --trusted-host mirrors.aliyun.com
1.更改阿里源 或者清华源 1.file - - settings - - project - - project interpreter - - 右侧+ - - manage rep ...
- K8S部署之kubeadm
K8S部署笔记 一.集群环境说明 主机名 IP地址 说明 k8s-master01 192.168.1.107 master节点 k8s-master02 192.168.1.108 master节点 ...
- pip 下载换源
命令:[pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple]
- ENGG1310 Electricity and electronics P1.3 Electromagnetic
课程内容笔记,自用,不涉及任何 assignment,exam 答案 Notes for self-use, do not include any assignments or exams 这一节主要 ...
- Stream流常用API
文档 https://www.runoob.com/java/java8-streams.html JDK8 Stream API: https://docs.oracle.com/javase/8/ ...
- HTML&CSS学习总结
目录 一. HTML学习总结 1.HTML是什么 2.HTML结构 1. 创建一个HTML实例 2. HTML结构解析 3. HTML标题 4. HTML段落 5. HTML链接 6. HTML图像 ...
- js数组去重,删除重复的属性值
let a=[] let hash={} a=a.reduce((pre,next)=>{ hash[next.name]?"":(hash[next.name]=true& ...
- ScrollView里面不能嵌套一个FlatList,这个需要如何通过FlatList自己单独实现
1. 组件结构 2. 实现的效果图 3. 重点解释一些方法 (1)stickyHeaderIndices ,这个属性在ScrollView里面,FlatList也继承了该属性,其主要作用,会让第一个成 ...
- CCF 201903-2 二十四点
#include <iostream> #include <bits/stdc++.h> #include <string> using namespace std ...
- MARKDOWN操作
我是中国人 我是中国人 字体 Hello,World! Hello,World! 引用 选择狂神说 分割线 图片 图片2 超链接 点击转到链接 列表 A B C D 表格 ...