Mybatis查询延迟加载
1.1 启用延迟加载
Mybatis的延迟加载是针对嵌套查询而言的,是指在进行查询的时候先只查询最外层的SQL,对于内层SQL将在需要使用的时候才查询出来。Mybatis的延迟加载默认是关闭的,即默认是一次就将所有的嵌套SQL一并查了将对象所有的信息都查询出来。开启延迟加载有两种方式。
第一种是在对应的<collection>或<association>标签上指定fetchType属性值为“lazy”。如下示例中我们在查询id为selectByPrimaryKey的查询时会返回BaseResultMap,在BaseResultMap中,我们指定了属性“nodes”是一个集合类型的,而且是需要通过id为selectNodes的查询进行查询的,我们指定了该查询的fetchType为lazy,即延迟加载。
<resultMap id="BaseResultMap"type="com.elim.learn.mybatis.model.SysWfProcess">
<id column="id" jdbcType="INTEGER" property="id" />
<result column="template_id" jdbcType="INTEGER"property="templateId" />
<result column="creator" jdbcType="INTEGER" property="creator"/>
<result column="create_time" jdbcType="TIMESTAMP"property="createTime" />
<collection property="nodes" column="id"
ofType="com.elim.learn.mybatis.model.SysWfNode"select="selectNodes" fetchType="lazy"/>
</resultMap>
<resultMap id="SysWfNodeResult"type="com.elim.learn.mybatis.model.SysWfNode">
<id column="id" jdbcType="INTEGER" property