【Ibatis】(十二)、复杂类型集合的属性
2012-08-06 21:02
330 查看
Result Map还可以装入代表复杂类型对象集合(List)的属性,用以表示在数据库中相互关系为多对多或一对多的数据。拥有集合属性的类作为“一”的一方,而在集合中的对象作为“多”的一方。用来装入对象集合的mapped statement和上面例子一样。唯一的不同是,让SQL Map架构装入复杂类型集合(List)的业务对象的属性必须是java.util.List或java.util.Collection类型
映射文件:
Xml代码
<!--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层:
Java代码
public Category getProductUseComplexTypeList(int id) throws SQLException {
init();
Category category = (Category)sqlMapClient.queryForObject("getCategory-complex-list", id);
return category;
}
Test类:
Java代码
/**
* 测试复杂类型集合的属性
* @throws SQLException
*/
public void getProductUseComplexTypeList() throws SQLException {
Category category = productDao.getProductUseComplexTypeList(1);
System.out.println(category);
}
Category类:
Java代码
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
映射文件:
Xml代码
<!--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层:
Java代码
public Category getProductUseComplexTypeList(int id) throws SQLException {
init();
Category category = (Category)sqlMapClient.queryForObject("getCategory-complex-list", id);
return category;
}
Test类:
Java代码
/**
* 测试复杂类型集合的属性
* @throws SQLException
*/
public void getProductUseComplexTypeList() throws SQLException {
Category category = productDao.getProductUseComplexTypeList(1);
System.out.println(category);
}
Category类:
Java代码
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
相关文章推荐
- 32-35. Struts2_类型转换错误消息的显示和定制&自定义类型转换器&类型转换器与复杂属性&集合协同使用
- ibatis 复杂类型属性(自定义类型的属性)
- 八.Spring的属性注入-注入对象,复杂的集合类型属性
- 【Ibatis】(十三)、复杂类型属性(即自定义类型的属性)
- ibatis 复杂类型属性(自定义类型的属性) 避免n+1次select(1:1)
- Struts(二十一):类型转换与复杂属性、集合属性配合使用
- ibatis-复杂类型属性
- 复杂对象ibatis插入,属性为list,怎么一次性插入
- 【Spring实战】—— 7 复杂集合类型的注入
- Spring属性注入【三】 复杂类型注入
- 在唯一密钥属性“name”设置为“ScriptHandlerFactory”时,无法添加类型为“add”的重复集合项
- Spring、基本类型属性和集合类型属性的注入
- Struts2.x 学习笔记 之 类型转换与复杂属性
- 如何应用Asp.Net Mvc内建功能(DefaultModelBinder)实现简单类型、复杂类型、集合类型,以及字典类型的自动绑定
- IIS错误:在唯一密钥属性“fileExtension”设置为“.mp4”时,无法添加类型为“mimeMap”的重复集合项
- Spring-注入参数详解-[集合类型属性]
- ria +prism 难解问题之 "返回类型必须是实体或复杂类型、复杂类型的集合或预定义的可序列化类型之一"
- 09_传智播客Spring2.5视频教程_Spring如何装配各种集合类型的属性
- Struts2:类型转换之批量封装Set集合类型的属性
- 问题.NET--win7 IIS唯一密钥属性“VALUE”设置为“DEFAULT.ASPX”时,无法添加类型为“add”的重复集合