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

相关推荐
Jelena157795857925 小时前
电商运营分析数据比价接口实战:多平台价格监控与智能决策系统
java·大数据·数据库
神明不懂浪漫6 小时前
【第五章】Java中的继承与多态
java·开发语言
GeekArch7 小时前
第28讲:避坑——AI堆栈分配错误、栈溢出BUG
c语言·人工智能·stm32·mcu·学习·bug
AI多Agent协作实战派8 小时前
AI多Agent协作系统实战(十七):凌晨4点,我的AI系统在“假装工作“——3个bug同时爆炸的5小时
java·前端·bug
gaolei_eit8 小时前
Java+Ai+vue
java·spring·maven
qq_2518364578 小时前
基于java Web 动漫视频网站毕业论文
java·开发语言·前端
LayZhangStrive8 小时前
JUC相关的函数、注解、变量杂记
java·面试·多线程·juc
未秃头的程序猿8 小时前
给公司做了个AI客服Agent,用的Spring AI 1.0,3天上线领导拍板了
java·后端·ai编程
曹牧8 小时前
Eclipse 批量文本替换
java·ide·eclipse
程序员清风9 小时前
OpenAI官方发布最新提示词技巧!
java·后端·面试