Java多对多数据关系回显

该代码段是一个Java方法,用于通过用户ID获取其关联的项目及其对应的课程列表。首先,它从关系表中获取用户项目的ID,然后查询项目相关的课程ID,接着获取项目和课程的详细信息,并将课程添加到对应的项目对象中,最后返回包含所有项目及其课程的列表。
摘要由CSDN通过智能技术生成

根据用户id查询所学项目,项目有对应课程

  • relation_user_project
  • relation_project_course
  /**
     * 根据token,查询用户拥有课程
     *
     * @return 结果
     * @author 
     * @date 2023/1/12 
     */
    @Override
    public List<BaseProject> userCourseList() {

        Long userId = SecurityUtils.getUserId();

        //查出实训项目主键
        List<Long> projectIds = relationUserProjectService.selectRelationUserProjectList(new RelationUserProject(userId))
                .stream().map(RelationUserProject::getProjectId).collect(Collectors.toList());

        //实训项目主键查出课程列表
        List<RelationProjectCourse> relationProjectCourses = relationProjectCourseService.selectCourseListByProjectIds(projectIds);

        //课程主键
        Set<Long> courseIds = relationProjectCourses.stream().map(RelationProjectCourse::getCourseId).collect(Collectors.toSet());

        //项目信息
        List<BaseProject> baseProjectList = baseProjectMapper.selectBaseProjectByIds(projectIds);

        //课程信息
        Map<Long, BaseCourse> courseMap = baseCourseMapper.selectBaseCourseListByIds(courseIds)
                .stream().collect(Collectors.toMap(BaseCourse::getId, o -> o));

        for (BaseProject project : baseProjectList) {
            for (RelationProjectCourse relationProjectCours : relationProjectCourses) {
                if (relationProjectCours.getProjectId().equals(project.getId())) {
                    project.getCourses().add(courseMap.get(relationProjectCours.getCourseId()));
                }
            }
        }
        return baseProjectList;
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值