1.多表联查(通过collection标签的ofType属性)
1)mapper
2)mapper.xml
解释:
- 主对象映射
- MyBatis 使用 resultMap 将查询结果映射到 Classes 对象上。
- 主键 cid 和属性 className 直接映射到对应的数据库列。
- 集合映射
- collection 标签用于映射 Classes 对象中的 students 集合。
- 每个 Student 对象的属性 sid, studentName, studentAge, classId 分别映射到对应的数据库列。
3)测试代码
4)测试结果
2.分布查询(通过collection标签的select属性)
1)mapper
2)mapper.xml
解释:
- 主对象映射
- MyBatis 使用 resultMap 将查询结果映射到 Classes 对象上。
- 主键 cid 和属性 className 直接映射到对应的数据库列。
- 分布查询
- collection 标签用于映射 Classes 对象中的 students 集合。
- 通过 select 属性指定另一个映射语句的 ID,用于执行分布查询。
- column 属性指定传递给分布查询的参数列名称,这里是 cid 列。
- 子对象映射
- 每个 Student 对象的属性 sid, classId, studentName, studentAge 分别映射到对应的数据库列。
3)测试代码
4)测试结果
附录
1.Classes实体类
package org.xiji.enty;
import java.util.ArrayList;
import java.util.List;
import org.xiji. enty.Student;
/**
* 班级表
*/
public class Classes {
private int cid;
private String className;
List<Student> students;
public List<Student> getStudents() {
return students;
}
public Classes(int id, String className, List<Student> students) {
this.cid = id;
this.className = className;
this.students = students;
}
public Classes() {
students = new ArrayList<>();
}
public Classes(int id, String className) {
this.cid = id;
this.className = className;
}
public int getId() {
return cid;
}
public void setId(int id) {
this.cid = id;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
public void setStudents(List<Student> students) {
this.students = students;
}
@Override
public String toString() {
return "Classes{" +
"id=" + cid +
", className='" + className + '\'' +
", students=" + students +
'}';
}
}
2.student类
package org.xiji.enty;
import org.xiji.enty.Classes;
/**
* 学生表
*/
public class Student {
private int sid;
private String studentName;
private int studentAge;
private int classId;
private Classes classes;
public Student(int id, String studentName, int studentAge, int classId, Classes classes) {
this.sid = id;
this.studentName = studentName;
this.studentAge = studentAge;
this.classId = classId;
this.classes = classes;
}
public Student(int id, String studentName, int studentAge, int classId) {
this.sid = id;
this.studentName = studentName;
this.studentAge = studentAge;
this.classId = classId;
}
public Student() {
}
public int getId() {
return sid;
}
public void setId(int id) {
this.sid = id;
}
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
public int getStudentAge() {
return studentAge;
}
public void setStudentAge(int studentAge) {
this.studentAge = studentAge;
}
public int getClassId() {
return classId;
}
public void setClassId(int classId) {
this.classId = classId;
}
public Classes getClasses() {
return classes;
}
public void setClasses(Classes classes) {
this.classes = classes;
}
public void setClasses(int id,String className)
{
this.classes = new Classes(id,className);
}
@Override
public String toString() {
return "Student{" +
"id=" + sid +
", studentName='" + studentName + '\'' +
", studentAge=" + studentAge +
", classId=" + classId +
", classes=" + classes +
'}';
}
}