mabatis中resultMap中的映射小问题

来源:互联网 发布:ubuntu wine 1.9 编辑:程序博客网 时间:2024/06/06 20:23

前几天在使用mybatis框架的过程中发现了几个问题。。。望各位大神多多指教

我做的是一个购物网站类的项目
首先我的项目中有这样几个类

//购物车类package com.model;import java.math.BigDecimal;import java.util.List;public class ShoppingCar {    private Integer id;//购物车id    private Integer customerId;//用户id    private Integer productId;//商品id    private Integer buyNum;//购买数量    private BigDecimal productPrice;//商品价格    private BigDecimal sumPrice;//合计价格    private Product product;//商品的实体类    private List<ShoppingCarAttr> shoppingCarAttrs;//选中的商品的属性    public Product getProduct() {return product;}public void setProduct(Product product) {this.product = product;}public List<ShoppingCarAttr> getShoppingCarAttrs() {return shoppingCarAttrs;}public void setShoppingCarAttrs(List<ShoppingCarAttr> shoppingCarAttrs) {this.shoppingCarAttrs = shoppingCarAttrs;}public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public Integer getCustomerId() {        return customerId;    }    public void setCustomerId(Integer customerId) {        this.customerId = customerId;    }    public Integer getProductId() {        return productId;    }    public void setProductId(Integer productId) {        this.productId = productId;    }    public Integer getBuyNum() {        return buyNum;    }    public void setBuyNum(Integer buyNum) {        this.buyNum = buyNum;    }    public BigDecimal getProductPrice() {        return productPrice;    }    public void setProductPrice(BigDecimal productPrice) {        this.productPrice = productPrice;    }    public BigDecimal getSumPrice() {        return sumPrice;    }    public void setSumPrice(BigDecimal sumPrice) {        this.sumPrice = sumPrice;    }}

//商品实体类
package com.model;

import java.util.List;

public class Product {
private Integer id; //商品id

private String productName;//商品名称private Integer productVolume;//商品销量private Integer classifySubId;//所属分类idprivate String productParam;//private String coverImg;//封面图路径private String productDetail;//详情private List<ProductSku> productSkus;//销售属性

public List getProductSkus() {
return productSkus;
}

public void setProductSkus(List productSkus) {
this.productSkus = productSkus;
}

public Integer getId() {
return id;
}

public void setId(Integer id) {    this.id = id;}

public String getProductName() {
return productName;
}

public void setProductName(String productName) {    this.productName = productName == null ? null : productName.trim();}public Integer getProductVolume() {    return productVolume;}public void setProductVolume(Integer productVolume) {    this.productVolume = productVolume;}public Integer getClassifySubId() {    return classifySubId;}public void setClassifySubId(Integer classifySubId) {    this.classifySubId = classifySubId;}public String getProductParam() {    return productParam;}public void setProductParam(String productParam) {    this.productParam = productParam == null ? null : productParam.trim();}public String getCoverImg() {    return coverImg;}public void setCoverImg(String coverImg) {    this.coverImg = coverImg == null ? null : coverImg.trim();}public String getProductDetail() {    return productDetail;}public void setProductDetail(String productDetail) {    this.productDetail = productDetail == null ? null : productDetail.trim();}

}

mapper文件映射

//购物车实体类的映射






<association property="product" column="product_id" javaType="com.model.Product" autoMapping="true" select="selectProductById">


<collection property="shoppingCarAttrs" column="id" ofType="com.model.ShoppingCarAttr" select="selectCarAttrsById">    <id property="id" column="id" /></collection>




select * from product
where
id = #{productId}

“`

我现在要从数据库中取两个购物车信息 假设这两个购物车中商品都是一部苹果手机
但是一个是16G的 另一个是8G的 在实体类中表示为购物车实体类中的商品实体类中的productSkus集合是不同的 查询的时候映射product实体类的条件id两次是相同的 那么mabatis中就不会在内存中开辟一块新的空间去存储第二个product对象 直接更改之前的product对象 所以会发生覆盖 暂时还没有找到解决办法 只能查处一个 将其中的属性赋值出来 赋给一个新的实体类 不知道各位大神有没有什么好的解决办法。。。。。