場景
在現實現場景時再芋,如查詢某個學生的信息,大部份情況下我們還需要知道這個學生所在的班集信息坚冀。但在一些查詢中又有可能我們不需要班集信息济赎,只希望得到學生的個人基本信息。而在我們的開發(fā)中我們使用了一條分步查詢的SQL - getStudentInfo 來完成學生信息及班集信息的檢索记某,此時我們可以使用getStudentInfo這條SQL司训,使用Mybatis的延遲加載來實現按需帶出班集信息的功能。需要查詢學生的班集信息時才會執(zhí)行班集信息的檢索液南,否則只檢索學生的基本信息壳猜。配制
在Mybatis核心配制文件中加入如下配制信息
<settings>
<!-- 開啟延遲加載 -->
<setting name="lazyLoadingEnabled" value="true"/>
<!-- 查詢所有數據或按需查詢,默認為查詢所有數據:true -->
<setting name="aggressiveLazyLoading" value="false" />
</settings>
StudentInfo.java
public class StudentInfo {
private String name;
private String age;
private String sex;
private int classId;
private ClassInfo classInfo;
public void setName (String name) {
this.name = name;
}
public String getName () {
return this.name;
}
... ...
}
StudentMapper.java
public interface StudentMapper {
StudentInfo getStudentInfoById (String id);
}
ClassInfoMapper.java
public interface ClassInfoMapper {
ClassInfo getClassInfoById (String id);
}
StudentMapper.xml
<select id="getStudentInfoById" resultMap="studentInfoMap">
SELECT name, age, sex, address, classId FROM student WHERE id = #{id}
</select>
<resultMap id="studentInfoMap" type="com.cat.pojo.StudentInfo">
<association property="classInfo" column="classId" select="com.cat.mapper.ClassInfoMapper.getClassInfoById" />
</resultMap>