ResultMap
ResultMap用于多表查询时,指定各表的查询结果与返回类型各字段之间的匹配关系。
测试类如下:
@Data
public class Student {
private String name;
private int schoolId;
private School school;
}
@Data
public class School {
private int id;
private String name;
}
xml文件如下:
<resultMap id="testMap" type="Student">
<!-- 绑定返回类的属性 -->
<result property="name" column="student_name"/>
<result property="schoolId" column="school_id"/>
<!-- 绑定内部类的属性 -->
<association property="school" javaType="School">
<result property="id" column="school_id"/>
<result property="name" column="school_name"/>
</association>
</resultMap>
<select id="test" resultMap="testMap">
select school.id school_id, student.name student_name, school.name school_name
from student
left join school
on student.school_id=school.id
</select>
测试代码
void test() {
Student student = testMapper.test();
System.out.println(student);
}
结果:Student(name=test_student, schoolId=1, school=School(id=1, name=test_school))
ResultType
只能按字段名匹配,适用于单表查询
xml:
<select id="test" resultType="Student">
select name, school_id
from student
</select>
测试代码同上,结果:Student(name=test_student, schoolId=1, school=null)