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

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

映射文件:

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

DAO层:

Java代码 收藏代码
  1. publicCategorygetProductUseComplexTypeList(intid)throwsSQLException{
  2. init();
  3. Categorycategory=(Category)sqlMapClient.queryForObject("getCategory-complex-list",id);
  4. returncategory;
  5. }

Test类:

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

Category类:

Java代码 收藏代码
  1. packagecom.ibatis.dataobject;
  2. importjava.util.Iterator;
  3. importjava.util.List;
  4. publicclassCategory{
  5. @Override
  6. publicStringtoString(){
  7. Stringtemp="Category---id:"+this.id+"\n"+"description:"+this.description;
  8. for(Iteratorit=this.productList.iterator();it.hasNext();){
  9. Productproduct=(Product)it.next();
  10. temp+="\n"+product.toString();
  11. }
  12. returntemp;
  13. }
  14. privateintid;
  15. privateStringdescription;
  16. privateListproductList;
  17. publicListgetProductList(){
  18. returnproductList;
  19. }
  20. publicvoidsetProductList(ListproductList){
  21. this.productList=productList;
  22. }
  23. publicintgetId(){
  24. returnid;
  25. }
  26. publicvoidsetId(intid){
  27. this.id=id;
  28. }
  29. publicStringgetDescription(){
  30. returndescription;
  31. }
  32. publicvoidsetDescription(Stringdescription){
  33. this.description=description;
  34. }
  35. }

结果:

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

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

你可能感兴趣的:(ibatis)