Result Map还可以装入代表复杂类型对象集合(List)的属性,用以表示在数据库中相互关系为多对多或一对多的数据。拥有集合属性的类作为“一”的一方,而在集合中的对象作为“多”的一方。用来装入对象集合的mapped statement和上面例子一样。唯一的不同是,让SQL Map架构装入复杂类型集合(List)的业务对象的属性必须是java.util.List或java.util.Collection类型
映射文件:
<!--complex type Collection property-->
<resultMap id="get-product-result" class="product">
<result property="id" column="prd_id"/>
<result property="description" column="prd_description"/>
<result property="price" column="prd_price"/>
</resultMap>
<resultMap id="get-categery-complex-list" class="category">
<result property="id" column="cat_id"/>
<result property="description" column="cat_description"/>
<result property="productList" column="cat_id" select="getProductListByCatId"/>
</resultMap>
<select id="getCategory-complex-list" resultMap="get-categery-complex-list" parameterClass="int">
<![CDATA[
select * from t_category where cat_id = #value#
]]>
</select>
<select id="getProductListByCatId" resultMap="get-product-result" >
<![CDATA[
select * from t_product where prd_cat_id=#value#
]]>
</select>
DAO层:
public Category getProductUseComplexTypeList(int id) throws SQLException {
init();
Category category = (Category)sqlMapClient.queryForObject("getCategory-complex-list", id);
return category;
}
Test类:
/**
* 测试复杂类型集合的属性
* @throws SQLException
*/
public void getProductUseComplexTypeList() throws SQLException {
Category category = productDao.getProductUseComplexTypeList(1);
System.out.println(category);
}
Category类:
package com.ibatis.dataobject;
import java.util.Iterator;
import java.util.List;
public class Category {
@Override
public String toString() {
String temp = "Category---id:" + this.id + "\n" + "description:" + this.description;
for (Iterator it=this.productList.iterator();it.hasNext();) {
Product product = (Product)it.next();
temp += "\n" + product.toString();
}
return temp;
}
private int id;
private String description;
private List productList;
public List getProductList() {
return productList;
}
public void setProductList(List productList) {
this.productList = productList;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
结果:
Category---id:1
description:sports
Product----id:1
description:basketball
price:206.99
Product----id:2
description:football
price:106.99
分享到:
相关推荐
在Ibatis中,复杂查询通常涉及到多个表的联接、条件动态拼接、子查询以及各种数据类型的处理。文档"Ibatis复杂查询语句.doc"所展示的查询语句就是一个很好的例子,展示了Ibatis如何处理复杂的数据库操作。接下来,...
在“iBATIS-SqlMaps中文教程集合”中,你将找到四本深入浅出的教程,这些教程涵盖了iBATIS的基础使用、高级特性和实战案例,帮助开发者快速掌握并熟练运用iBATIS解决项目中的实际问题。 1. **基础篇** - iBATIS...
ibatis 读取oracle clob类型
iBATIS是一个开源的Java库,它允许程序员将SQL数据库查询与应用程序代码分离,从而简化了数据访问层的实现。...无论你是初学者还是有经验的开发者,这个文档集合都会是你深入理解和使用iBATIS的重要资源。
- **复杂类型**: 包括JavaBean对象、数组、集合等。这些类型在iBatis中通常通过`HashMap`或特定的实体类进行封装后传递。 #### #与$的区别 在iBatis中编写SQL语句时,可以使用`#{}`和`${}`两种方式来插入参数。这...
在《iBATIS In Action》一书中,作者详细介绍了如何使用iBATIS进行高级查询技术,包括处理复杂的集合属性、映射关系的继承、语句类型和DDL(Data Definition Language),以及如何处理大规模数据集。 1. **使用...
Ibatis对枚举类型的原生支持可能不如实体类那样直观,但通过一些策略,我们可以实现枚举与数据库字段之间的映射。以下将详细解释如何在Ibatis中处理枚举类型。 首先,我们需要定义枚举类。枚举类通常包含若干枚举...
Manning.iBATIS.in.Action.Jan.2007.eBook-BBL.pdf MyBatis 3 User Guide Simplified Chinese.pdf MyBatis-3.0.3-Migrations.pdf MyBatis-3.0.3-User-Guide.pdf MyBatis-3-Migrations.doc MyBatis-3-Migrations.pdf ...
Ibatis 是一款轻量级的Java持久层框架,它允许开发者将SQL语句与Java代码分离,从而使得数据库访问更加灵活、易于维护。本篇文章将深入探讨Ibatis的核心概念、最佳实践以及与其他框架如Struts和Spring的整合。 1. ...
4. 自动类型转换:iBATIS能够自动处理Java对象与数据库字段之间的类型转换,减轻开发负担。 三、iBATIS的使用步骤 1. 添加依赖:在项目中引入iBATIS的库文件,如iBatis.jar和相关的数据库驱动。 2. 配置数据源:...
标题 "ibatis类型" 暗示我们讨论的是关于iBATIS这个持久层框架的一些特定类型或组件。iBATIS是Java开发中的一个流行数据库访问框架,它允许开发者将SQL语句直接集成到XML配置文件中,实现了SQL与Java代码的分离,...
Ibatis提供了多种方式来实现映射,如自动类型匹配、自定义类型处理器、复杂关联映射等。 7. **缓存机制**:Ibatis内置了本地缓存和二级缓存,可以提高数据读取速度。本地缓存作用于单个SqlSession,而二级缓存则...
以及ibatis的概述、如何开始使用ibatis、构建SqlSessionFactory的方法(包括通过XML和不使用XML的方式)、获取SqlSession的过程、探索映射SQL语句的方法、命名空间的注意事项、作用域与生命周期的解释、mapper配置...
iBATIS提供了集合映射和关联映射的方式来处理这些关系,使我们能够在Java对象中方便地操作这些复杂的数据结构。 其次,属性设置详解涉及到的是如何在iBATIS中设置和获取Java对象的属性,以及如何将这些属性与数据库...
在`org.apache.ibatis.executor.resultset.ResultSetHandler`中,ResultMap被用来定义字段与Java对象属性的映射关系。ResultMap不仅支持简单的列名映射,还能处理复杂的一对多、一对一关系映射。 六、...
### 经典开源插件之ibatis #### 概述 ibatis(现称为MyBatis)是一款优秀的持久层框架,它将SQL语句与Java代码分离,支持自定义SQL查询、存储过程以及高级映射等功能。ibatis的灵活性使得开发者能够通过简单的XML...
与Hibernate等其他ORM框架相比,iBATIS 更为简洁,上手速度更快,适合那些不需要复杂功能但又希望简化数据库访问的项目。 在快速入门iBATIS的过程中,首先要理解其基本概念。iBATIS通过XML配置文件来定义SQL语句与...
自己项目的开发包集合,其中包括:缓存处理ehcache相关jar,spring MVC4.0 jar,ehcache依赖jar,以及其他jar(图像处理thumbnailator-0.4.2),包虽然不是很新但可用。实际使用时找包较为麻烦,现在整理出来,希望...
本教程集合了这三者的集成应用,旨在帮助开发者理解和掌握如何在实际项目中有效地运用这些技术。 1. Struts框架:Struts是一个基于MVC(Model-View-Controller)设计模式的Java Web应用框架。它提供了控制层的实现...
在iBatis中,`<iterate>`标签是一个非常实用的功能,它允许我们处理集合数据,如数组、List或Map等,进行循环遍历并生成动态SQL语句。下面我们将详细探讨`<iterate>`标签的用法及其示例。 `<iterate>`标签的主要...