`

ibatis延迟加载的功能

阅读更多
对于1:N或者1:1的对象,如何一次取出,可以参考已有的代码,ibatis有延迟加载的功能。至于jsp里怎么取子对象的值,非常简单,和class中的写法一样,如business.businessServcieList,这样再对此做遍历处理。



一个产品对应3条Rage信息

public class ProductVo implements Serializable {  
    private List<WholesaleRange> wholeRageList;       //Rage信息集合  
 
    public List<WholesaleRange> getWholeRageList() {  
        return wholeRageList;  
    }  
 
    public void setWholeRageList(List<WholesaleRange> wholeRageList) {  
        this.wholeRageList = wholeRageList;  
    }  
}

<typeAlias alias="wholesaleprd" type="com.woyo.business.wholesale.domain.model.ProductVo" /> 
 
  <resultMap id="wholesalePriceRageMap" class="wholesaleprd" > 
    <result column="id" property="id" jdbcType="VARCHAR" /> 
    <result column="title" property="title" jdbcType="VARCHAR" /> 
    <result column="is_mixed_batch" property="mixedBatch" nullValue="0" /> 
    <result column="id" property="wholeRageList" select="getWholeRageList"/> 
  </resultMap> 
 
 
  //这个可以是其他sql.xml下的sql语句
<select id="getWholeRageList" resultClass="wholesaleRage" parameterClass="long"> 
    select id as id , whilesale_id as whilesaleId , quantity as quantity , price as price from wholesale_range where whilesale_id = #value# order by quantity  
</select>

我在项目中的规范:
DOMAIN对象中,增加了很多和表字段无关的属性,目的就是为了返回一个扁平的grid。这样的做法是不对的。原则上,domain对象中,只有和数据库表对应的属性和setter/getter,另外可以加上一些getStatusDesc等为了在页面上显示的东西。对于主从关系的类,不要把主从关系的类的属性,直接搬到当前类中,要用对象的形式体现。对于1:N的关系,只要在1中增加对N的引用,不要在N中增加对1的引用。如Business 和 BusiessService的关系,在Business中增加一个List<BusiessService>属性即可,不要在BusiessService再增加Business属性,也不要在Business中增加BusinessServcie.BusinessServcieName引用,更不要在BusinessSQL.xml中,去取BusinessServcie.BusinessServcieName并返回。
分享到:
评论

相关推荐

    iBatis资料 语法

    延迟加载(Lazy Loading)是iBatis的一种优化策略,只在真正需要时才加载关联的对象,减少了不必要的数据库交互。一对多或多对一关系的处理是对象关系映射(ORM)中的常见问题,iBatis提供了优雅的方式来管理这些...

    mybatis3--延迟加载,缓存

    在 MyBatis 的映射文件中,可以为一对一或一对多的关系映射设置 `lazyLoadingEnabled=true`,开启全局延迟加载功能。然后在需要延迟加载的关联映射上添加 `&lt;association&gt;` 或 `&lt;collection&gt;` 标签,并设置 `...

    iBATIS2.0学习总结

    总之,iBATIS2.0是一个强大的SQL Mapping框架,它简化了数据访问层的开发,允许开发者自由地编写SQL,同时提供了诸如延迟加载、事务管理、结果映射等高级特性。在项目实践中,合理利用这些特性,可以提高代码的可...

    iBatis文档\ibatis.doc

    iBatis提供了延迟加载(Lazy Loading)功能,允许在真正需要关联数据时才执行对应的SQL。在`resultMap`中开启延迟加载: ```xml ``` #### 动态映射 动态SQL让开发者可以根据条件动态构造SQL语句,使用`if`, `...

    iBatis入门与精通

    `ibatis 延迟加载、对多关系、缓存的测试.mht`则深入探讨了iBatis的高级特性。延迟加载(Lazy Loading)允许在需要时才加载关联对象,可以有效提高性能。对多关系(One-to-Many, Many-to-One)的处理是ORM(对象关系...

    ibatis 配置文件详解

    2. **settings**:提供了一系列的开关,用于开启或关闭某些功能,如缓存的启用、延迟加载的开启等。 3. **typeAliases**:类型别名的配置,用于简化Java类型的引用。 4. **typeHandlers**:类型处理器,用于处理...

    夏昕-ibatis 开发指南pdf版

    接着,书中还会介绍iBatis的高级特性,如结果映射、关联查询、延迟加载等。结果映射允许开发者将数据库查询结果自动映射到Java对象,简化了数据处理的过程。而关联查询则能处理一对一、一对多、多对多的关系,使得...

    IBatis.net-IBatis.DataAccess.1.9.2/IBatis.DataMapper.1.6.2

    4. **性能优化**:通过延迟加载(Lazy Loading)和预加载(Eager Loading)策略,优化数据加载性能。 5. **日志集成**:允许开发者集成各种日志框架,以便记录数据库操作信息,便于调试和监控。 **总结** IBatis...

    ibatis资料大全

    - **外部事务管理**:允许ibatis与外部事务管理器集成,例如Spring框架的事务管理功能。 - **缓存**:提供了多种类型的缓存策略,以提升查询性能。 - **MEMORY类型Cache与WeakReference**:内存中的缓存实现,适合...

    ibatis配置文件

    - `lazyLoadingEnabled`: 控制是否启用懒加载,即延迟加载关联对象,直到真正需要时才加载。 - `errorTracingEnabled`: 控制是否开启错误追踪,便于调试。 - `maxRequests`, `maxSessions`, `maxTransactions`: 分别...

    iBATIS 2.0 开发指南

    - **延迟加载**:利用 `&lt;association&gt;` 元素的 `fetchType` 属性实现延迟加载,以提高性能。 - **动态映射**:使用 `&lt;if&gt;`、`&lt;choose&gt;`、`&lt;foreach&gt;` 等元素构建动态 SQL 语句,提高代码复用性和灵活性。 #### ...

    ibatis 框架原理实现

    同时,Ibatis也支持结果集的分页和延迟加载,进一步提升性能。 9. **插件扩展**: Ibatis允许开发者自定义插件,通过拦截器模式增强SqlSession或Executor的行为,例如日志记录、性能分析等。 这个自己编写的...

    ibatis in action 电子书(pdf)

    8. **高级话题**:涵盖与iBATIS相关的高级主题,如批处理、延迟加载、自定义类型处理器、插件扩展等,提升开发者对iBATIS框架的深度理解。 9. **最佳实践**:提供实用的项目开发建议,如如何设计合理的映射文件结构...

    ibatis.doc

    延迟加载(Lazy Loading)是一种优化策略,当对象属性被访问时,才去数据库查询相关联的数据,以提高性能。动态映射允许在运行时生成SQL,使得SQL语句可以根据传入参数的变化而变化,增加了代码的灵活性。 事务管理...

Global site tag (gtag.js) - Google Analytics