iBatis是否支持像Hibernate一样的延迟加载?

时间:2012-11-08 07:48:04

标签: lazy-loading ibatis

我想知道iBatis是否可以像Hibernate支持的那样为懒惰提取提供支持?例如,我有User类,其中有

public class User {
    List<Address> addresses;

    public List<Address> getAddresses(){
        return addresses;
    }
    ...
}

现在我想在调用user.getAddresses()时实现延迟抓取。是否有可能在iBatis中实现这一目标?如果是,那么如何?

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

不确定。
根据文档,您可以为要加载延迟的属性设置lazyLoad的{​​{1}}元素的result属性。
E.g:

resultMap

答案 1 :(得分:0)

XML映射:
3.2.7+-> fetchType属性(懒惰/渴望)

<resultMap id="itemResultMap" type="Item">
    <id property="id" column="id"/>
    <association property="subItem" column="subItemId" javaType="SubItem" 
                 select="selectSubItemByIdQuery" fetchType="lazy"/>
</resultMap>

@注解映射:

@Select({"SELECT * FROM item WHERE id = #{id}"})
@Results({
        @Result(property = "id", column = "id"),
        @Result(property = "subItem", column = "subItemId", javaType = SubItem.class,
                one = @One(select = "SubItemMapper.getById", 
                           fetchType = FetchType.LAZY))
})
Item getById(int id);