Mybatis查询延迟加载

本文详细介绍了Mybatis的延迟加载机制,包括如何启用延迟加载、分析延迟加载的实现原理,以及aggressiveLazyLoading和lazyLoadTriggerMethods两个配置选项的作用。默认情况下,Mybatis的延迟加载在访问代理对象的方法时加载所有延迟加载的对象。通过设置aggressiveLazyLoading可改变这一行为,而lazyLoadTriggerMethods则允许指定触发加载延迟对象的方法。
摘要由CSDN通过智能技术生成

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值