mybatis三表联合查询

首先三个表的实体如下:全部是从下至上三个表都是一对多的关系

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

<!-- 三表联合查询 -->

<resultMap type="com.dxn.dxnproject.vo.SpuParaTypeVo" id="spuInfo">
    <result column="spu_id" property="spuId"/>
    <result column="spu_name" property="spuName"/>
    <result column="spu_unique_code" property="spuUniqueCode"/>
    <result column="spu_description" property="spuDescription"/>
    <result column="spu_price" property="spuPrice"/>
    <result column="spu_supply_period" property="spuSupplyPeriod"/>
    <result column="spu_quality_period" property="spuQualityPeriod"/>
    <result column="spu_image" property="spuImage"/>
    <result column="spu_document" property="spuDocument"/>
    <result column="spu_tag_group" property="spuTagGroup"/>
    <result column="spu_online_status" property="spuOnlineStatus"/>
    <result column="spu_mutex_relationship" property="spuMutexRelationship"/>
    <result column="spu_reserved_field1" property="spuReservedField1"/>
    <result column="spu_reserved_field2" property="spuReservedField2"/>
    <result column="spu_create_time" property="spuCreateTime"/>
    <result column="spu_update_time" property="spuUpdateTime"/>
    <collection property="paraTypeList" ofType="com.dxn.dxnproject.vo.ParaTypeDataVo">
        <result column="para_type_id" property="paraTypeId"/>
        <result column="spu_id" property="spuId"/>
        <result column="spu_name" property="spuName"/>
        <result column="para_type_name" property="paraTypeName"/>
        <result column="para_type_name_description" property="paraTypeNameDescription"/>
        <result column="para_type_create_time" property="paraTypeCreateTime"/>
        <result column="para_type_update_time" property="paraTypeUpdateTime"/>
        <collection property="paraDataList" ofType="com.dxn.dxnproject.bean.ParaData">
            <result column="para_data_id" property="paraDataId"/>
            <result column="para_data_name" property="paraDataName"/>
            <result column="para_data_code" property="paraDataCode"/>
            <result column="para_data_description" property="paraDataDescription"/>
            <result column="para_data_price" property="paraDataPrice"/>
            <result column="para_data_remark" property="paraDataRemark"/>
            <result column="para_type_id" property="paraTypeId"/>
            <result column="para_type_name" property="paraTypeName"/>
            <result column="para_data_create_time" property="paraDataCreateTime"/>
            <result column="para_data_update_time" property="paraDataUpdateTime"/>
        </collection>
    </collection>
</resultMap>

<select id="querySpuInfo" resultMap="spuInfo">
 select s.spu_id,s.spu_name,s.spu_unique_code,s.spu_description,s.spu_price,s.spu_supply_period,s.spu_quality_period,
 s.spu_image,s.spu_document,s.spu_tag_group,s.spu_online_status,s.spu_mutex_relationship,s.spu_reserved_field1,s.spu_reserved_field2,s.spu_create_time,s.spu_update_time,
 pt.para_type_id,pt.spu_id,pt.spu_name,pt.para_type_name,pt.para_type_name_description,pt.para_type_create_time,pt.para_type_update_time,
 pd.para_data_id,pd.para_data_name,pd.para_data_code,pd.para_data_description,pd.para_data_price,pd.para_data_remark,pd.para_type_id,pd.para_type_name,
 pd.para_data_create_time,pd.para_data_update_time
 from `spu` s
 left join `para_type` pt
 on s.spu_id = pt.spu_id
 left join `para_data` pd
 on pd.para_type_id = pt.para_type_id
 where s.spu_id=#{spuId}
</select>

mapper接口如下

// 8. 三表联合查询,给定spuId,查询该产品型号的所有参数类型以及参数数据
List<SpuParaTypeVo> querySpuInfo(Integer spuId);
  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值