首先三个表的实体如下:全部是从下至上三个表都是一对多的关系
package com.dxn.dxnproject.bean;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.util.Date;
/**
* @time 2019-12-10-10:35
* 参数数据实体类
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ParaData {
@JsonProperty(value = "paraDataId")
private Integer paraDataId;
@JsonProperty(value = "paraDataName")
private String paraDataName;
@JsonProperty(value = "paraDataCode")
private String paraDataCode;
@JsonProperty(value = "paraDataDescription")
private String paraDataDescription;
@JsonProperty(value = "paraDataPrice")
private BigDecimal paraDataPrice;
@JsonProperty(value = "paraDataRemark")
private String paraDataRemark;
@JsonProperty(value = "paraTypeId")
private Integer paraTypeId;
@JsonProperty(value = "paraTypeName")
private String paraTypeName;
@JsonProperty(value = "paraDataCreateTime")
private Date paraDataCreateTime;
@JsonProperty(value = "paraDataUpdateTime")
private Date paraDataUpdateTime;
}
package com.dxn.dxnproject.vo;
import com.dxn.dxnproject.bean.ParaData;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List;
/**
* @time 2019-12-10-15:01
*
* 参数类型和参数数据映射视图, 供三表查询使用
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ParaTypeDataVo {
@JsonProperty(value = "paraTypeId")
private Integer paraTypeId;
@JsonProperty(value = "spuId")
private Integer spuId;
@JsonProperty(value = "spuName")
private String spuName;
@JsonProperty(value = "paraTypeName")
private String paraTypeName;
@JsonProperty(value = "paraTypeNameDescription")
private String paraTypeNameDescription;
@JsonProperty(value = "paraTypeCreateTime")
private Date paraTypeCreateTime;
@JsonProperty(value = "paraTypeUpdateTime")
private Date paraTypeUpdateTime;
@JsonProperty(value = "paraDataList")
private List<ParaData> paraDataList;
}
package com.dxn.dxnproject.vo;
import com.dxn.dxnproject.bean.ParaType;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* @time 2019-12-10-15:04
* 产品型号和参数类型试图,供三表查询使用
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SpuParaTypeVo {
// 产品型号主键
@JsonProperty(value = "spuId")
private Integer spuId;
// 产品型号名称
@JsonProperty(value = "spuName")
private String spuName;
// 产品型号唯一表示码(以后用于生成二维码)
@JsonProperty(value = "spuUniqueCode")
private String spuUniqueCode;
// 产品型号介绍
@JsonProperty(value = "spuDescription")
private String spuDescription;
// 产品型号基础价格
@JsonProperty(value = "spuPrice")
private BigDecimal spuPrice;
// 产品供货期
@JsonProperty(value = "spuSupplyPeriod")
private String spuSupplyPeriod;
// 产品质保期
@JsonProperty(value = "spuQualityPeriod")
private String spuQualityPeriod;
// 产品图片(一张url)
@JsonProperty(value = "spuImage")
private String spuImage;
// 产品pdf文档,多个pdf
@JsonProperty(value = "spuDocument")
private String spuDocument;
// 产品所属标签组合,以#分隔
@JsonProperty(value = "spuTagGroup")
private String spuTagGroup;
// 产品上线状态(0:下线; 1:即将下线; 2:在售)
@JsonProperty(value = "spuOnlineStatus")
private Integer spuOnlineStatus;
// 产品型号的互斥关系,字符串
@JsonProperty(value = "spuMutexRelationship")
private String spuMutexRelationship;
// 产品型号预留字段1
@JsonProperty(value = "spuReservedField1")
private String spuReservedField1;
// 产品型号预留字段2
@JsonProperty(value = "spuReservedField2")
private String spuReservedField2;
// 产品型号创建时间
@JsonProperty(value = "spuCreateTime")
private Date spuCreateTime;
// 产品型号更新时间
@JsonProperty(value = "spuUpdateTime")
private Date spuUpdateTime;
@JsonProperty(value = "paraTypeList")
private List<ParaType> paraTypeList;
}
mapper.xml
<!-- 三表联合查询 -->
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
mapper接口如下
// 8. 三表联合查询,给定spuId,查询该产品型号的所有参数类型以及参数数据
List<SpuParaTypeVo> querySpuInfo(Integer spuId);