Ibatis的延迟加载的配置和引起的一些问题

本文详细介绍了在SQLMapConfig.xml中启用懒加载和增强功能的方法,并通过CardInfoMap.xml展示了如何配置结果映射以方便访问卡信息的卡类型。特别强调了利用延迟加载带来的变化和需要注意的细节,包括判断卡类型ID而非对象是否为null,以及延迟加载带来的内存占用问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.在sqlMapConfig.xml中,加入:

<sqlMapConfig>

<settings lazyLoadingEnabled="true" enhancementEnabled="true"/>

<sqlMap resource=""/>

</sqlMapConfig>

2.在CardInfoMap.xml中,加入
<resultMap id="cardInfo_result" class="cardInfo">
<result property="cardType" column="CARD_TYPE_ID" select="CardType_findCardType"/>
</resultMap>
当然,CardTypeMap.xml和CardInfoMap.xml都要有。

3.这样,在代码中,就可以方便地访问卡信息的卡类型了。如:

CardInfo cardInfo = cardManager.findCardInfo(cardId);

String cardTypeName = cardInfo.getCardType().getName();

不过,利用延迟加载带来一些和平时编码不一样的地方:

1. cardInfo.getCardType()永远不会等于null,它里面实际上是一个代理类,所以如果要判断cardInfo.getCardType()是否为null,没法判断,因此,需要转变一下思路,可以判断cardInfo.getCardType().getId()(这个ID是PK)是否为null来判断。

2. 利用Ibatis延迟加载,cardInfo.getCardType()里面的代理类会,占用内存非常大。(这个可以用SizeOf测试出来)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值