学习笔记
-
- [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
- 在对应的Mapper里定义一个方法
- 在同名的xml文件里具体定义相应的sql语句
4.3.3 开发Service
- 编写CourseCategoryService.java
- 编写对应的实现类
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 测试接口
- 运行
2.生成响应的json文件
- 完成前后端连调:
打开前端工程,进入新增课程页面。
课程分类下拉框可以正常显示