`
xulongfa
  • 浏览: 70833 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ibatis Tips 之 复杂类型集合的属性

阅读更多

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复杂查询语句.doc

    在Ibatis中,复杂查询通常涉及到多个表的联接、条件动态拼接、子查询以及各种数据类型的处理。文档"Ibatis复杂查询语句.doc"所展示的查询语句就是一个很好的例子,展示了Ibatis如何处理复杂的数据库操作。接下来,...

    iBATIS-SqlMaps中文教程集合

    在“iBATIS-SqlMaps中文教程集合”中,你将找到四本深入浅出的教程,这些教程涵盖了iBATIS的基础使用、高级特性和实战案例,帮助开发者快速掌握并熟练运用iBATIS解决项目中的实际问题。 1. **基础篇** - iBATIS...

    ibatis 读取oracle clob类型

    ibatis 读取oracle clob类型

    iBatis各种文档集合

    iBATIS是一个开源的Java库,它允许程序员将SQL数据库查询与应用程序代码分离,从而简化了数据访问层的实现。...无论你是初学者还是有经验的开发者,这个文档集合都会是你深入理解和使用iBATIS的重要资源。

    ibatis中输入输出各种类型的参数分析及#与$区别

    - **复杂类型**: 包括JavaBean对象、数组、集合等。这些类型在iBatis中通常通过`HashMap`或特定的实体类进行封装后传递。 #### #与$的区别 在iBatis中编写SQL语句时,可以使用`#{}`和`${}`两种方式来插入参数。这...

    ibatis 文档查询

    在《iBATIS In Action》一书中,作者详细介绍了如何使用iBATIS进行高级查询技术,包括处理复杂的集合属性、映射关系的继承、语句类型和DDL(Data Definition Language),以及如何处理大规模数据集。 1. **使用...

    ibatis 支持枚举类型

    Ibatis对枚举类型的原生支持可能不如实体类那样直观,但通过一些策略,我们可以实现枚举与数据库字段之间的映射。以下将详细解释如何在Ibatis中处理枚举类型。 首先,我们需要定义枚举类。枚举类通常包含若干枚举...

    ibatis、mybatis官方教程文档集合(含Manning.iBATIS.in.Action)

    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总结 ibatis ibatis ibatis ibatis

    Ibatis 是一款轻量级的Java持久层框架,它允许开发者将SQL语句与Java代码分离,从而使得数据库访问更加灵活、易于维护。本篇文章将深入探讨Ibatis的核心概念、最佳实践以及与其他框架如Struts和Spring的整合。 1. ...

    ibatis学习文档集合

    4. 自动类型转换:iBATIS能够自动处理Java对象与数据库字段之间的类型转换,减轻开发负担。 三、iBATIS的使用步骤 1. 添加依赖:在项目中引入iBATIS的库文件,如iBatis.jar和相关的数据库驱动。 2. 配置数据源:...

    ibatis类型

    标题 "ibatis类型" 暗示我们讨论的是关于iBATIS这个持久层框架的一些特定类型或组件。iBATIS是Java开发中的一个流行数据库访问框架,它允许开发者将SQL语句直接集成到XML配置文件中,实现了SQL与Java代码的分离,...

    ibatis demo,ibatis例子,ibatis示例

    Ibatis提供了多种方式来实现映射,如自动类型匹配、自定义类型处理器、复杂关联映射等。 7. **缓存机制**:Ibatis内置了本地缓存和二级缓存,可以提高数据读取速度。本地缓存作用于单个SqlSession,而二级缓存则...

    ibatis教程 输入参数详解

    以及ibatis的概述、如何开始使用ibatis、构建SqlSessionFactory的方法(包括通过XML和不使用XML的方式)、获取SqlSession的过程、探索映射SQL语句的方法、命名空间的注意事项、作用域与生命周期的解释、mapper配置...

    ibatis2.0中文API

    iBATIS提供了集合映射和关联映射的方式来处理这些关系,使我们能够在Java对象中方便地操作这些复杂的数据结构。 其次,属性设置详解涉及到的是如何在iBATIS中设置和获取Java对象的属性,以及如何将这些属性与数据库...

    ibatis源码,ibatis源码 ibatis源码 ibatis源码

    在`org.apache.ibatis.executor.resultset.ResultSetHandler`中,ResultMap被用来定义字段与Java对象属性的映射关系。ResultMap不仅支持简单的列名映射,还能处理复杂的一对多、一对一关系映射。 六、...

    经典开源插件之ibatis

    ### 经典开源插件之ibatis #### 概述 ibatis(现称为MyBatis)是一款优秀的持久层框架,它将SQL语句与Java代码分离,支持自定义SQL查询、存储过程以及高级映射等功能。ibatis的灵活性使得开发者能够通过简单的XML...

    iBATIS教程之快速入门浅析

    与Hibernate等其他ORM框架相比,iBATIS 更为简洁,上手速度更快,适合那些不需要复杂功能但又希望简化数据库访问的项目。 在快速入门iBATIS的过程中,首先要理解其基本概念。iBATIS通过XML配置文件来定义SQL语句与...

    spring MVC+ibatis+ehcache开发包集合

    自己项目的开发包集合,其中包括:缓存处理ehcache相关jar,spring MVC4.0 jar,ehcache依赖jar,以及其他jar(图像处理thumbnailator-0.4.2),包虽然不是很新但可用。实际使用时找包较为麻烦,现在整理出来,希望...

    struts+spring+ibatis框架集合教程

    本教程集合了这三者的集成应用,旨在帮助开发者理解和掌握如何在实际项目中有效地运用这些技术。 1. Struts框架:Struts是一个基于MVC(Model-View-Controller)设计模式的Java Web应用框架。它提供了控制层的实现...

    ibatis中iterate的例子

    在iBatis中,`&lt;iterate&gt;`标签是一个非常实用的功能,它允许我们处理集合数据,如数组、List或Map等,进行循环遍历并生成动态SQL语句。下面我们将详细探讨`&lt;iterate&gt;`标签的用法及其示例。 `&lt;iterate&gt;`标签的主要...

Global site tag (gtag.js) - Google Analytics