2

我想知道 iBatis 是否可以像 Hibernate 一样提供对惰性获取的支持?例如我有用户类

public class User {
    List<Address> addresses;

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

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

谢谢你的帮助。

4

2 回答 2

3

当然。
根据文档,您可以为要延迟加载的lazyLoad属性设置resulta 元素的属性。 例如:resultMap

<resultMap id="resultMapUser" class="User">
    <result property="addresses" select="someOtherStatementName" lazyLoad="true"/>
</resultMap>
于 2012-11-14T19:20:26.123 回答
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);
于 2019-04-24T17:23:23.833 回答