mybatis-plus-join的使用解决mybatis多表查询

1. 准备工作

(1)数据库

student

course

(2)pom依赖

<dependency>
    <groupId>com.github.yulichang</groupId>
    <artifactId>mybatis-plus-join</artifactId>
    <version>1.2.2</version>
</dependency>

(3)mapper.xml文件

StuentMapper.xml

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

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.lynash.mycloud.mybatisjoin.modules.student.StudentMapper">

    <resultMap id="studentMap" type="com.lynash.mycloud.mybatisjoin.entity.StudentEntity">
                <id property="id" column="id"/>
                <result property="name" column="name"/>
                <result property="courseid" column="courseid"/>
    </resultMap>
</mapper>

CourseMapper.xml

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

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.lynash.mycloud.mybatisjoin.modules.course.CourseMapper">

    <resultMap id="courseMap" type="com.lynash.mycloud.mybatisjoin.entity.CourseEntity">
                <id property="id" column="id"/>
                <result property="name" column="name"/>
                <result property="score" column="score"/>
    </resultMap>
</mapper>

(4)Mapper interface

@Mapper
public interface StudentMapper extends MPJBaseMapper<StudentEntity> {

}
@Mapper
public interface CourseMapper extends MPJBaseMapper<CourseEntity> {

}

2. Student和Course 多表查询left join

student controller

@ApiOperation(value = "测试多表查询", notes = "测试多表查询")
    @GetMapping("/joinquery/{id}")
    public Res<List<StudentCourseDispVO>> getCourseById(@PathVariable("id") String id) {
        return Res.ok(studentService.getCourseById(id));
    }

service

@Override
    public List<StudentCourseDispVO>  getCourseById(String id){

        List<StudentCourseDispVO> list = studentMapper.selectJoinList(StudentCourseDispVO.class,
                new MPJLambdaWrapper<StudentEntity>()
                        .selectAll(StudentEntity.class)
                        .select(CourseEntity::getScore)
                        .leftJoin(CourseEntity.class, CourseEntity::getId, StudentEntity::getCourseid)
                        .eq(StudentEntity::getId, id));
        return list;

    }

结果类

@Data
public class StudentCourseDispVO implements Serializable{

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "" )
    private String id;

    @ApiModelProperty(value = "" )
    private String name;

    @ApiModelProperty(value = "" )
    private String courseid;

    @ApiModelProperty(value = "" )
    private Integer score;
}

输出结果

经验分享 程序员 微信小程序 职场和发展