mybatis多对一映射association详解

简单映射(一对一)

多对一映射

方式1:按照查询嵌套处理

方式2:按照结果嵌套处理


 

简单映射(一对一)

mybatis结果集映射ResultMap

多对一映射

我们有2个类,一个班级类ClassRoom,一个学生类Student

班级类代码如下

package com.lingaolu.pojo;

/**
 * @author 林高禄
 * @create 2020-10-26-20:17
 */
public class ClassRoom {
    private Long id;
    private String name;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "ClassRoom{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

 

学生类代码如下,下面的注解是使用lombokLombok的使用步骤

package com.lingaolu.pojo;

import lombok.*;

/**
 * @author 林高禄
 * @create 2020-10-26-17:43
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {
    private Long id;
    private String name;
    private String ageNum;
    private Long classId;

}

 

现在我们想查询学生的时候,把相应的班级信息也查出来,所以我们建一个学生的vo类,StudentVo,继承Student,另外加属性ClassRoom

package com.lingaolu.vo;

import com.lingaolu.pojo.ClassRoom;
import com.lingaolu.pojo.Student;

/**
 * @author 林高禄
 * @create 2020-10-26-20:58
 */
public class StudentVo extends Student {
    private ClassRoom  classRoom;

    public ClassRoom getClassRoom() {
        return classRoom;
    }

    public void setClassRoom(ClassRoom classRoom) {
        this.classRoom = classRoom;
    }

    @Override
    public String toString() {
        return "StudentVo{" +
                super.toString()+","+
                "classRoom=" + classRoom +
                '}';
    }
}

方式1:按照查询嵌套处理

单元测试结果

方式2:按照结果嵌套处理

单元测试结果

我们把数据库的信息修改一下,让id为2的学生的班级id为空,没有任何班级

 

上面的语句如果班级找不到就会返回空,所以还是调整一下,改为左连接,这样即使班级找不到,也能把学生信息给找出来

 

相关推荐
©️2020 CSDN 皮肤主题: 点我我会动 设计师:白松林 返回首页