mybatis延迟加载(懒加载)
加入依赖:
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>3.2.5</version>
</dependency>
mybatis配置文件配置:
<settings>
<!-- 打开延迟加载的开关 -->
<setting name="lazyLoadingEnabled" value="true" />
<!-- 将加载改为按需加载 -->
<setting name="aggressiveLazyLoading" value="false" />
</settings>
在结果集映射中,一对多和多对一关系中需要什么就查询什么
ep:
根据学生来查班级信息(多对一关系),如果没有打印或使用班级信息,就不去查询班级信息
<!-- 映射多对一关系 :多个学生属于同一个班级-->
<resultMap type="student" id="studentMap" autoMapping="true">
<!-- 映射主键 -->
<id column="sid" property="sid"/>
<!-- 类属性是个对象 fetchType="lazy":懒加载-->
<association property="grade" column="gid" fetchType="lazy" select="cn.et.lesson3.resultMap.xml.GradeMapper.queryGradeByGid"></association>
</resultMap>
<select id="queryStudent" resultMap="studentMap">
select * from student where sid=#{0}
</select>
加入依赖:
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>3.2.5</version>
</dependency>
mybatis配置文件配置:
<settings>
<!-- 打开延迟加载的开关 -->
<setting name="lazyLoadingEnabled" value="true" />
<!-- 将加载改为按需加载 -->
<setting name="aggressiveLazyLoading" value="false" />
</settings>
在结果集映射中,一对多和多对一关系中需要什么就查询什么
ep:
根据学生来查班级信息(多对一关系),如果没有打印或使用班级信息,就不去查询班级信息
<!-- 映射多对一关系 :多个学生属于同一个班级-->
<resultMap type="student" id="studentMap" autoMapping="true">
<!-- 映射主键 -->
<id column="sid" property="sid"/>
<!-- 类属性是个对象 fetchType="lazy":懒加载-->
<association property="grade" column="gid" fetchType="lazy" select="cn.et.lesson3.resultMap.xml.GradeMapper.queryGradeByGid"></association>
</resultMap>
<select id="queryStudent" resultMap="studentMap">
select * from student where sid=#{0}
</select>