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 读取oracle clob类型
Ibatis复杂查询语句.doc
iBATIS 级联iBATIS 级联iBATIS 级联
ibatis学习 ibatis总结 ibatis ibatis ibatis
里面包含四本很经典的ibatis教程,能满足项目中的各种需求。
复杂类型集合的属性 避免N+1 Select(1:M和M:N) 组合键值或多个复杂参数属性 支持Parameter Map和Result Map的数据类型 缓存Mapped Statement结果集 只读 VS 可读写 Serializable可读写缓存 缓存类型 动态Mapped ...
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资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料
共11个文档,pdf格式和word格式都有。 自己整理的对iBATIS框架的一些简单理论知识,有助于进一步了解和深入学习iBATIS框架,错误或不当之处,在所难免。
自己项目的开发包集合,其中包括:缓存处理ehcache相关jar,spring MVC4.0 jar,ehcache依赖jar,以及其他jar(图像处理thumbnailator-0.4.2),包虽然不是很新但可用。实际使用时找包较为麻烦,现在整理出来,希望...
struts+spring+ibatis框架集合教程。里面有ssi的源码和三个搭建文档还有个ibatis的中文帮助文档。
ibatis demo,ibatis例子,ibatis示例
ibatis
ibatis的原码 ibatis源码 ibatis源码 ibatis源码
Ibatis3,手册,Ibatis3手册,Ibatis3使用手册,Ibatis3参考手册
NULL 博文链接:https://tkiicpp.iteye.com/blog/625474
iBATIS教程是iBATIS初学者需要掌握什么内容呢?那么这篇文章就会告诉你。
ibatis api,ibatis文档,ibatis说明文档