9.复杂的结果集映射关系
在我们的结果集关系映射中分类两类:
-
多对一映射关系:多个学生可以有同一个老师,即多个学生对应一个老师
在Pojo层面,我们一个javabean中的属性,该属性的类型为javabean。
- 问题:当Mybatis将字段与属性进行映射时,就无法将一些属性映射到该属性中,
- 我们可以通过关联的方式进行映射,association标签
-
一对多映射关系:一个老师可以有多个学生,即一个老师对应多个学生
在Pojo层面,我们一个javabean的属性为一个集合。
- 问题:Mybatis无法将字段映射到该集合中。
- 我们可以通过集合的方式进行映射,collection标签
上面两种映射关系,即标签的使用,我们将在下面进行举例。
9.1多对一映射
关联映射关系:Student 关联Teacher类,即Student类中有Teacher类型的属性。
Student类
public class Student {
private Integer id;
private String name;
private Teacher teacher;
public Student(Integer id, String name, Teacher teacher) {
this.id = id;
this.name = name;
this.teacher = teacher;
}
public Student() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Teacher getTeacher() {
return teacher;
}
public void setTeacher(Teacher teacher) {
this.teacher = teacher;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", teacher=" + teacher +
'}';
}
}
Teacher类
public class Teacher {
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Teacher() {
}
public Teacher(Integer id, String name) {
this.id = id;
this.name = name;
}
@Override
public String toString()