【Ibatis】(十二)、复杂类型集合的属性

Result Map还可以装入代表复杂类型对象集合(List)的属性,用以表示在数据库中相互关系为多对多或一对多的数据。拥有集合属性的类作为“一”的一方,而在集合中的对象作为“多”的一方。用来装入对象集合的mapped statement和上面例子一样。唯一的不同是,让SQL Map架构装入复杂类型集合(List)的业务对象的属性必须是java.util.List或java.util.Collection类型

映射文件:

Xml代码   收藏代码
  1. <!--complex type Collection property-->  
  2. <resultMap id="get-product-result" class="product">  
  3.             <result property="id" column="prd_id"/>  
  4.             <result property="description" column="prd_description"/>  
  5.             <result property="price" column="prd_price"/>  
  6.         </resultMap>  
  7.         <resultMap id="get-categery-complex-list" class="category">  
  8.             <result property="id" column="cat_id"/>  
  9.             <result property="description" column="cat_description"/>  
  10.             <result property="productList" column="cat_id" select="getProductListByCatId"/>  
  11.         </resultMap>  
  12.           
  13.         <select id="getCategory-complex-list" resultMap="get-categery-complex-list" parameterClass="int">  
  14.             <![CDATA[ 
  15.                 select * from t_category where cat_id = #value# 
  16.             ]]>  
  17.         </select>  
  18.           
  19.         <select id="getProductListByCatId" resultMap="get-product-result" >  
  20.             <![CDATA[     
  21.                 select * from t_product where prd_cat_id=#value# 
  22.             ]]>  
  23.         </select>  

 DAO层:

Java代码   收藏代码
  1. public Category getProductUseComplexTypeList(int id) throws SQLException {  
  2.         init();  
  3.         Category category = (Category)sqlMapClient.queryForObject("getCategory-complex-list", id);  
  4.         return category;  
  5.     }  

 Test类:

Java代码   收藏代码
  1. /** 
  2.      * 测试复杂类型集合的属性 
  3.      * @throws SQLException 
  4.      */  
  5.     public void getProductUseComplexTypeList() throws SQLException {  
  6.         Category category = productDao.getProductUseComplexTypeList(1);  
  7.         System.out.println(category);  
  8.     }  

 Category类:

Java代码   收藏代码
  1. package com.ibatis.dataobject;  
  2.   
  3. import java.util.Iterator;  
  4. import java.util.List;  
  5.   
  6. public class Category {  
  7.   
  8.     @Override  
  9.     public String toString() {  
  10.         String temp = "Category---id:" + this.id + "\n" + "description:" + this.description;  
  11.         for (Iterator it=this.productList.iterator();it.hasNext();) {  
  12.              Product product = (Product)it.next();  
  13.              temp += "\n" + product.toString();  
  14.         }  
  15.         return temp;  
  16.     }  
  17.     private int id;  
  18.     private String description;  
  19.     private List productList;  
  20.       
  21.       
  22.     public List getProductList() {  
  23.         return productList;  
  24.     }  
  25.     public void setProductList(List productList) {  
  26.         this.productList = productList;  
  27.     }  
  28.     public int getId() {  
  29.         return id;  
  30.     }  
  31.     public void setId(int id) {  
  32.         this.id = id;  
  33.     }  
  34.     public String getDescription() {  
  35.         return description;  
  36.     }  
  37.     public void setDescription(String description) {  
  38.         this.description = description;  
  39.     }  
  40.       
  41.       
  42.       
  43. }  

 结果:

Category---id:1
description:sports
Product----id:1
description:basketball
price:206.99

Product----id:2
description:football
price:106.99

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值