【项目学习01_2024.05.05_Day05】

学习笔记

    • [4.3 接口开发](#4.3 接口开发)
      • [4.3.1 树型表查询](#4.3.1 树型表查询)
      • [4.3.2 开发Mapper](#4.3.2 开发Mapper)
      • [4.3.3 开发Service](#4.3.3 开发Service)
      • [4.3.4 测试Service](#4.3.4 测试Service)
    • [4.4 接口测试](#4.4 接口测试)
      • [4.4.1 接口层代码完善](#4.4.1 接口层代码完善)
      • [4.4.2 测试接口](#4.4.2 测试接口)

4.3 接口开发

4.3.1 树型表查询

4.3.2 开发Mapper

  1. 在对应的Mapper里定义一个方法
  2. 在同名的xml文件里具体定义相应的sql语句

4.3.3 开发Service

  1. 编写CourseCategoryService.java
  1. 编写对应的实现类
java 复制代码
package com.xuecheng.content.service.impl;

import com.xuecheng.content.mapper.CourseCategoryMapper;
import com.xuecheng.content.model.dto.CourseCategoryTreeDto;
import com.xuecheng.content.service.CourseCategoryService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * @author Sgy
 * @version 1.0
 * @date 2024/5/5 17:07
 * @description
 */
@Slf4j
@Service
public class CourseCategoryServiceImpl implements CourseCategoryService {

    @Autowired
    CourseCategoryMapper courseCategoryMapper;

    public List<CourseCategoryTreeDto> queryTreeNodes(String id){
        List<CourseCategoryTreeDto> courseCategoryTreeDtos = courseCategoryMapper.selectTreeNodes(id);

        //将list转map,以备使用,排除根节点
        Map<String,CourseCategoryTreeDto> mapTemp = courseCategoryTreeDtos.stream().filter(item->!id.equals(item.getId())).collect(Collectors.toMap(key -> key.getId(),value -> value,(key1,key2) -> key2));
        //最终返回的list
        List<CourseCategoryTreeDto> categoryTreeDtos = new ArrayList<>();
        //依次遍历每个元素,排除根节点
        courseCategoryTreeDtos.stream().filter(item->!id.equals(item.getId())).forEach(item->{
            if(item.getParentid().equals(id)){
                categoryTreeDtos.add(item);
            }
            //找到当前节点的父亲节点
            CourseCategoryTreeDto courseCategoryTreeDto = mapTemp.get(item.getParentid());
            if(courseCategoryTreeDto != null){
                if(courseCategoryTreeDto.getChildrenTreeNodes() == null){
                    courseCategoryTreeDto.setChildrenTreeNodes(new ArrayList<CourseCategoryTreeDto>());
                }
                //下边开始往ChildrenTreeNodes属性中放子节点
                courseCategoryTreeDto.getChildrenTreeNodes().add(item);
            }
        });
        return categoryTreeDtos;
    }
}

4.3.4 测试Service

java 复制代码
@SpringBootTest
class CourseCategoryServiceTests {

    @Autowired
    CourseCategoryService courseCategoryService;


    @Test
    void testqueryTreeNodes() {
        List<CourseCategoryTreeDto> categoryTreeDtos = courseCategoryService.queryTreeNodes("1");
        System.out.println(categoryTreeDtos);
    }

}

4.4 接口测试

4.4.1 接口层代码完善

4.4.2 测试接口

  1. 运行

    2.生成响应的json文件
  2. 完成前后端连调:
    打开前端工程,进入新增课程页面。
    课程分类下拉框可以正常显示

相关推荐
好望角雾眠8 分钟前
第一阶段C#基础-10:集合(Arraylist,list,Dictionary等)
笔记·学习·c#
艾伦~耶格尔12 分钟前
【集合框架LinkedList底层添加元素机制】
java·开发语言·学习·面试
星仔编程23 分钟前
python学习DAY46打卡
学习
一只叫煤球的猫35 分钟前
🕰 一个案例带你彻底搞懂延迟双删
java·后端·面试
最初的↘那颗心36 分钟前
Flink Stream API 源码走读 - print()
java·大数据·hadoop·flink·实时计算
大霞上仙1 小时前
实现自学习系统,输入excel文件,能学习后进行相应回答
python·学习·excel
JH30732 小时前
Maven的三种项目打包方式——pom,jar,war的区别
java·maven·jar
带刺的坐椅2 小时前
轻量级流程编排框架,Solon Flow v3.5.0 发布
java·solon·workflow·flow·solon-flow
yatingliu20193 小时前
HiveQL | 个人学习笔记
hive·笔记·sql·学习
David爱编程3 小时前
线程调度策略详解:时间片轮转 vs 优先级机制,面试常考!
java·后端