Mybatis 多级分类查询

简介: Mybatis 多级分类查询

表数据结构

image.png

扫描mapper.xml

image.png

开启mapper扫描

image.png

vo

@Data
public class EduOneSubjectVO {
    @ApiModelProperty(value = "课程类别ID")
    private String id;
    @ApiModelProperty(value = "类别名称")
    private String label;
    @ApiModelProperty(value = "二级分类list内容")
    private  List<EduOneSubjectVO>  children = new ArrayList<>();
}
mapper
<mapper namespace="com.atguigu.eduservice.mapper.EduSubjectMapper">
    <resultMap id="queryAllSubjectMap" type="com.atguigu.eduservice.entity.vo.EduOneSubjectVO">
        <id property="id" column="oneId" />
        <result property="label" column="oneTitle"/>
        <collection property="children" ofType="com.atguigu.eduservice.entity.vo.EduOneSubjectVO">
            <id property="id" column="twoId"/>
            <result property="label" column="twoTitle"/>
        </collection>
    </resultMap>
    <select id="queryAllSubject" resultType="list" resultMap="queryAllSubjectMap">
        SELECT o.id as oneId,o.title as oneTitle,t.id as twoId,t.title as twoTitle
        FROM edu_subject o
                 LEFT JOIN edu_subject t
                           on o.id = t.parent_id  WHERE o.parent_id = 0
    </select>
service
List<EduOneSubjectVO> queryAllSubject();
impl
@Override
public List<EduOneSubjectVO> queryAllSubject() {
    List<EduOneSubjectVO> eduOneSubjectVOS = subjectMapper.queryAllSubject();
    Collections.sort(eduOneSubjectVOS, new Comparator<EduOneSubjectVO>() {
        @Override
        public int compare(EduOneSubjectVO o1, EduOneSubjectVO o2) {
            return o1.getChildren().size() - o2.getChildren().size() >= 0? -1:1;
        }
    });
    return eduOneSubjectVOS;
}
controller
@GetMapping("getAllSubject")
@ApiOperation(value = "获取课程分类")
public R getAllSubject(){
    List<EduOneSubjectVO> list = subjectService.queryAllSubject();
    return R.ok().data("list",list);
}

目录结构

image.png

测试效果

image.png

相关文章
|
6天前
|
XML Java 数据库连接
mybatis中在xml文件中通用查询结果列如何使用
mybatis中在xml文件中通用查询结果列如何使用
42 0
|
6天前
|
Java 关系型数据库 数据库连接
MyBatis Plus 解决大数据量查询慢问题
MyBatis Plus 解决大数据量查询慢问题
|
6天前
|
SQL Java 关系型数据库
Mybatis多表关联查询与动态SQL(下)
Mybatis多表关联查询与动态SQL
18 0
|
6天前
|
SQL Java 数据库连接
Mybatis多表关联查询与动态SQL(上)
Mybatis多表关联查询与动态SQL
10 0
|
6天前
|
SQL 缓存 Java
mybatis 一对多查询
mybatis 一对多查询
24 0
|
6天前
|
SQL
MyBatis-Plus-Join关联查询
MyBatis-Plus-Join关联查询
|
6天前
|
SQL XML Java
MyBatis-Plus多表关联查询
MyBatis-Plus多表关联查询
|
6天前
|
SQL XML API
Mybatis-Plus实现查询操作
Mybatis-Plus实现查询操作
20 0
Mybatis-Plus实现查询操作
|
6天前
|
Java 数据库连接 mybatis
MyBatis-Plus查询工具类
MyBatis-Plus是一个MyBatis的增强工具类库,提供了许多实用的查询工具类。
10 0
|
6天前
|
SQL Java 数据库连接
Javaweb之Mybatis的基础操作之查询操作的详细解析
Javaweb之Mybatis的基础操作之查询操作的详细解析
22 0