谷粒学院-12-多表查询


要求:

思路:

在这种情况下,一般需要自己编写一个多表查询的sql

方案有四种

  • 内连接
  • 左外连接
  • 右外连接

这里我们选择了左外连接

先单独写一些sql语句,测试sql语句

SELECT ec.id,ec.title,ec.price,ec.cover,ec.lesson_num,
ecd.`description`,
et.name,
es1.title,
es2.title
FROM edu_course ec LEFT OUTER JOIN edu_course_description ecd ON ec.id = ecd.id
LEFT OUTER JOIN edu_teacher et ON ec.teacher_id = et.id
LEFT OUTER JOIN edu_subject es1 ON ec.subject_parent_id = es1.id
LEFT OUTER JOIN edu_subject es2 ON ec.subject_id = es2.id
WHERE ec.id = 1422543092343840770

流程:

写mapper接口

public interface EduCourseMapper extends BaseMapper {

    /*通过id获取到coursePublishVo对象*/
    CoursePublishVo getCoursePublishVo(String id);
}

写mapper.xml

<?xml version="1.0" encoding="UTF-8"?>


    
    

写service接口

/*
* 获取课程的发布信息-通过id
* */
CoursePublishVo getCoursePublish(String id);

service实现类

注意:在mybatis-plus中他调用mapper接口中的方法使用baseMapper去调用

@Override
public CoursePublishVo getCoursePublish(String id) {
    return baseMapper.getCoursePublishVo(id);
}

控制器

@ApiOperation(value = "通过课程id去获取课程发布信息")
@GetMapping("/getCoursePublishVo/{id}")
public Result getCoursePublish(
        @ApiParam(name = "id",value = "id")
        @PathVariable("id")String id
){
    return Result.success().data("coursePublishVo",eduCourseService.getCoursePublish(id));
}

注意点:

mybatis-plus一样要配置xml文件位置

但在自动生成java代码中如果xml文件在java文件夹中,是不会被编译的的,所以配置xml文件位置有两处地方需要配置

pom.xml文件


    
        
            src/main/java
            
                **/*.xml
            
        
    

application.properties文件(这里把对象简写也配置好了)

# mybatis配置
mybatis-plus.mapper-locations=classpath:com/wang/eduservice/mapper/xml/*.xml
mybatis-plus.type-aliases-package=com.wang.eduservice.entity