【项目学习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. 完成前后端连调:
    打开前端工程,进入新增课程页面。
    课程分类下拉框可以正常显示

相关推荐
网络安全-海哥2 分钟前
2025网络安全前景与学习路线:抓住数字时代的安全机遇
学习·web安全·网络安全·网络攻击·转行
讽刺人生Yan8 分钟前
RFSOC学习记录(四)MTS时序分析
学习·fpga·rfsoc
酌量13 分钟前
基于3D激光点云的障碍物检测与跟踪---(2)点云聚类
学习·机器人·聚类·激光点云
黑岚樱梦29 分钟前
计算机网络第四章学习
网络·学习·计算机网络
小小爱大王35 分钟前
AI 编码效率提升 10 倍的秘密:Prompt 工程 + 工具链集成实战
java·javascript·人工智能
彡皮37 分钟前
qt实用学习案例:数据库设计+图表显示+model-view模式+样式表定制
数据库·qt·学习
宫瑾1 小时前
STM32USB学习
stm32·嵌入式硬件·学习
CS Beginner1 小时前
【JavaWeb学习】myabtis.xml一次性加载mapper相关的文件
xml·学习
神龙斗士2401 小时前
继承和组合
java·开发语言
矢志航天的阿洪1 小时前
用TikZ绘制专业流程图:从入门到进阶(基于D3QN训练流程)
学习