我们的应用之中有一个一对多的情况 :
一个批发产品对应3条批发价格信息
于是model 结构 ;
public class ProductVo implements Serializable {
private List<WholesaleRange> wholeRageList; //价格信息集合
public List<WholesaleRange> getWholeRageList() {
return wholeRageList;
}
public void setWholeRageList(List<WholesaleRange> wholeRageList) {
this.wholeRageList = wholeRageList;
}
}
如何查询批发信息的时候直接带出附加的价格信息集合呢 ?
SQLMAP 如下构建:
<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>
<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>
<select id="getWholeSaleById" resultMap="wholesalePriceRageMap" parameterClass="long">
SELECT w.id as id ,w.title as title, p.id as prdId,p.product_name AS prdName ,p.count - w.order_amount AS balance_amount ,
p.price AS price, p.image_url AS imageUrl, w.supplier_name, w.supplier_tel, w.wholesale_amount,
w.wholesale_price, w.team_price, w.team_save, w.order_amount, w.team_amount ,w.is_mixed_batch
FROM wholesale w left join product p on w.product_id = p.id
where w.id = #value#
</select>
这样, 查询出的对象, Ibatis 会用延迟加载的策略来得到 wholeRageList
分享到:
相关推荐
在实际应用中,我们还可以通过动态SQL来灵活控制一对多的加载,例如延迟加载(lazy loading)或按需加载。`<if>` 和 `<choose>` 等标签可以用来条件性地执行不同的SQL片段,以优化性能。 总的来说,`iBatis` 的一对...
在IT领域,特别是Java开发中,iBatis是一个非常受欢迎的...以上是关于iBatis一对多关联映射的实战介绍,希望对您在开发过程中有所帮助。更多关于iBatis的高级用法和最佳实践,可以通过文章链接中的资源进行深入学习。
在数据关联方面,Ibatis提供了对一对多、一对一关联的处理。一对多关联通常通过collection标签实现,而一对一关联则通过association标签来配置。延迟加载(Lazy Loading)是Ibatis的一个高级特性,它允许在需要时才...
ibatis支持多种ORM映射策略,包括一对多关联和一对一关联。这些关联可以使用嵌套查询或嵌套结果的方式实现,允许开发者在多个表之间建立复杂的关系。此外,ibatis还支持延迟加载,即只有在真正需要时才加载关联对象...
- **数据关联**:包括一对多和一对一关联,支持懒加载,提高了应用程序的性能。 - **动态映射**:通过使用脚本语言(如OGNL)来动态构建SQL语句,提高了代码的灵活性和可维护性。 - **事务管理** - **基于JDBC的...
一对多或多对一关系的处理是对象关系映射(ORM)中的常见问题,iBatis提供了优雅的方式来管理这些复杂的关系。而缓存机制则可以提高数据访问性能,通过存储已查询过的数据,减少数据库的访问次数。 `一个使用ibatis...
iBatis支持复杂的数据关联,包括一对多、一对一关联。通过`collection`和`association`元素,你可以轻松地处理嵌套的结果集。 #### 一对多关联 在XML映射文件中,定义一个`collection`元素来表示一对多关系,例如:...
- **一对多关联**:一个实体类可以包含多个子实体,Ibatis提供了一种方式来处理这种关系,例如使用collection标签。 - **一对一关联**:一个实体类与另一个实体类之间存在一对一的关系,Ibatis通过resultMap标签实现...
- **延迟加载**:对于一对多和一对一关联,可以启用延迟加载,仅在真正需要关联对象时才加载,提高效率。 #### ibatis高级特性 - **动态映射**:ibatis允许在SQL语句中使用动态参数,如`if`、`choose`、`foreach`...
- **数据关联**:描述了一对多和一对一的关系映射方式,支持延迟加载以优化性能。 - **一对多关联**:通过子查询或嵌套查询的方式处理一对多关系。 - **一对一关联**:同样支持子查询或嵌套查询的方式处理一对一...
对于复杂的数据关联,Ibatis 提供了一对一、一对多的映射机制。一对一关联可以通过 `<one-to-one>` 标签实现,而一对多关联则可以使用 `<collection>` 标签配合 `<resultMap>` 实现。延迟加载(Lazy Loading)功能...
- **数据关联**:包括一对多和一对一关联,以及支持延迟加载,提高数据处理效率。 - **事务管理**:iBATIS 支持基于 JDBC 的本地事务管理和基于 JTA 的分布式事务管理。 - **基于 JDBC 的事务管理机制**:适用于...
在 MyBatis 的映射文件中,可以为一对一或一对多的关系映射设置 `lazyLoadingEnabled=true`,开启全局延迟加载功能。然后在需要延迟加载的关联映射上添加 `<association>` 或 `<collection>` 标签,并设置 `...
iBATIS的高级特性包括数据关联处理,分为一对多关联和一对一关联。一对多关联可以通过collection元素实现,一对一关联则通过resultMap元素配合association元素完成。延迟加载(Lazy Loading)是一种优化策略,当对象...
- **数据关联**:包括一对多关联和一对一关联,支持延迟加载。 - **动态映射**:允许在SQL语句中使用动态参数,例如`<if>`、`<choose>`等标签。 - **事务管理**: - **基于JDBC的事务管理机制**:利用JDBC的原生...
ibatis支持复杂的数据关联,包括一对多和一对一关联,这允许开发者在不牺牲性能的前提下处理复杂的数据关系。通过配置,ibatis能够智能地解析结果集,将关联的数据组装成树形结构或其他形式,简化了数据处理流程。 ...
而关联查询则能处理一对一、一对多、多对多的关系,使得复杂的数据结构也能轻松应对。延迟加载是一种优化策略,可以在需要时才加载关联的对象,减少了内存占用和不必要的数据库访问。 除此之外,iBatis与Spring框架...
6. **性能优化**:处理CLOB数据时,注意避免一次性加载整个CLOB内容到内存中,可以分块读取或延迟加载。 7. **事务管理**:由于CLOB操作可能会涉及到较大的数据量,确保正确设置事务的隔离级别和回滚规则,以防止...
此外,还可以使用`<result>`元素进行单个字段的映射,或者使用嵌套结果映射处理一对多或多对多的关系。 5. **SqlSession接口**: 在Ibatis中,SqlSession是执行SQL的主要接口,它提供了执行SQL、事务控制等方法。...