mybatis 延迟加载(懒加载)

延迟加载

在数据与对象进行 mapping 操作时,只有在真正使用到该对象时,才进行 mapping 操作,以减少数据库查询开销,从而提升系统性能。

但是Lazy Load也有缺点,在按需加载时会多次连接数据库, 同时会增加数据库的压力。所以在实际使用时,会衡量是否使 用 延迟加载。

 

mybatis默认没有开启延迟加载,需要在mybatis-config.xml中setting配置启动延时加载! 

<setting name="lazyLoadingEnabled" value="true"/>
<setting name="aggressiveLazyLoading" value="false"/>

lazyLoadingEnabled:true使用延迟加载,false禁用延迟加载, 默认为false。

aggressiveLazyLoading:

true启用时,当延迟加载开启时访问对 象中一个懒对象属性时,将完全加载这个对象的所有懒对象属性 。

false,当延迟加载时,按需加载对象属性(即访问对象中一个 懒对象属性,不会加载对象中其他的懒对象属性)。默认为true。

延迟加载需要多加入的架包:

设置一个实体类: 

 OrderMapper.xml

        <resultMap type="orders" id="orderAndUser">
		<id column="oids" property="id"></id>
		<result column="orderid" property="orderid"/>
		<result column="createtime" property="createtime"/>
		<result column="note" property="note"/>
		<association property="user" javaType="user"         

                    select="com.xjx.mapper.UserMapper.selectUserById" column="userid">
			
		</association>
	</resultMap>
	<!-- u.id uids,u.username,u.birthday,u.address -->
	<select id="selectOrderAndUser" resultMap="orderAndUser">
		select o.id oids,o.orderid,o.createtime,o.note,o.userid
		from orders o,t_user u
		where o.userid=u.id
	</select>

当查询内容只有订单表中的内容的时候,不需要查询关联的用户表

当查询的内容包含用户表的时候,需要调用查询用户表

查询结果: 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值