简单映射(一对一)

一对多映射

方式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类,ClassRoomVo,继承ClassRoom,另外加属性学生的集合students

package com.lingaolu.vo;

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

import java.util.List;

/**
 * @author 林高禄
 * @create 2020-10-27-19:32
 */
public class ClassRoomVo extends ClassRoom {

    private List<Student> students;

    public List<Student> getStudents() {
        return students;
    }

    public void setStudents(List<Student> students) {
        this.students = students;
    }

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

 

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

mybatis的一对多映射collection_Mybatis

单元测试结果

mybatis的一对多映射collection_mybatis_02

这里学生的年龄和班级id没有查出来,是因为属性名和数据库列名不一致导致的,所以查询学生的时候,在做一次映射就好了

mybatis的一对多映射collection_Mybatis_03

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

mybatis的一对多映射collection_Mybatis_04

单元测试结果

mybatis的一对多映射collection_collection_05