实体如下:

IntegralGoods  积分商品

IntegralGoodsImg  积分商品图片

ShelfLog    积分商品自动上架记录

 

IntegralGoods :IntegralGoodsImg:ShelfLog  = 1:n:1

1:1的多表联查或者m:n的多表联查 很简单,

现在出现1:n的情况,一种积分商品可能有多张图片

所以在最后的返回结果里想用LIst<IntegralGoodsImg>作为IntegralGoods 的一个字段作为参数进行接收

 

那mybatis怎么实现查询呢?

=========================================================

1.IntegralGoods 实体【只关注字段即可】,尤其是

 

@Transient

private List<IntegralGoodsImg> imgList;//图片们 

这个字段就是用来接收多个图片实体的

package com.pisen.cloud.luna.ms.jifen.base.domain;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.*;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;

import org.apache.commons.lang3.StringUtils;
import org.hibernate.annotations.Type;
import org.springframework.data.jpa.domain.Specification;

import com.pisen.cloud.luna.ms.jifen.base.common.BaseDomain;

/**
 * 积分商品表
 */
@Entity
@Table(uniqueConstraints = { @UniqueConstraint(columnNames = { "uid" })})
public class IntegralGoods extends BaseDomain {

    public static final int DELETE_FLAG_DELETE = 1;//删除

    public static final int DELETE_FLAG_DISDELETE = 0;//未删除

    public static final int SHELF_ON = 1;//上架

    public static final int SHELF_OFF = 0;//下架

    public static final int SHOW_HOME_FLAG_YES = 1;//首页展示

    public static final int SHOW_HOME_FLAG_NO = 0;//不在首页展示


    @Type(type = "text")
    private String description; //商品描述


    private String cdKey;//虚拟物品激活码 ---弃用

    @Column(nullable = false)
    private String name; // 名称

    @Column(nullable = false)
    private Float marketValue; // 原价

    @Column(nullable = false)
    private Integer integral; // 兑换积分

    private Integer type; // (1:实物 2:虚拟)

    @Column(nullable = false)
    private Integer stock; // 库存数量(-1时无限量 : 正常扣除)

    @Column(nullable = false)
    private Integer saleNum; // 销量 已兑换数量


    
    private Integer version;


    /**
     * ========新增字段===================
     */
    @Column(nullable = false)
    private Integer limitNum;//限兑数量

    private String goodsCode;//商品编号

    @Column(nullable = false)
    private String specification;//商品规格  实物商品必填

    private Integer deleteFlag;//删除标识

    @Column(nullable = false)
    private Integer shelfFlag;//上架标识

    @Column(nullable = false)
    private Integer homeShowFlag;//是否首页展示

    private String remark;    //备注

    
    @Transient
    private String order;//排序字段
    @Transient
    private String orderType;//排序方法
    @Transient
    private String headImg;//首页图片

    @Transient
    private List<String> imgUrlList;//接收前台URL集合使用

    @Transient
    private Date shelfDate;//上架时间    接收前台字段

    @Transient
    private Date obtainedDate;//下架时间        接收前台字段

    private String shelfRemark;//上架信息  备注

    @Transient
    private List<IntegralGoodsImg> imgList;//图片们


    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public String getShelfRemark() {
        return shelfRemark;
    }

    public void setShelfRemark(String shelfRemark) {
        this.shelfRemark = shelfRemark;
    }

    public Integer getHomeShowFlag() {
        return homeShowFlag;
    }

    public void setHomeShowFlag(Integer homeShowFlag) {
        this.homeShowFlag = homeShowFlag;
    }

    public Integer getShelfFlag() {
        return shelfFlag;
    }

    public void setShelfFlag(Integer shelfFlag) {
        this.shelfFlag = shelfFlag;
    }

    public Integer getLimitNum() {
        return limitNum;
    }

    public void setLimitNum(Integer limitNum) {
        this.limitNum = limitNum;
    }

    public String getGoodsCode() {
        return goodsCode;
    }

    public void setGoodsCode(String goodsCode) {
        this.goodsCode = goodsCode;
    }

    public String getSpecification() {
        return specification;
    }

    public void setSpecification(String specification) {
        this.specification = specification;
    }


    public Integer getDeleteFlag() {
        return deleteFlag;
    }

    public void setDeleteFlag(Integer deleteFlag) {
        this.deleteFlag = deleteFlag;
    }

    public List<IntegralGoodsImg> getImgList() {
        return imgList;
    }

    public void setImgList(List<IntegralGoodsImg> imgList) {
        this.imgList = imgList;
    }

    public Integer getVersion() {
        return version;
    }

    public void setVersion(Integer version) {
        this.version = version;
    }

    public String getOrder() {
        return order;
    }

    public void setOrder(String order) {
        this.order = order;
    }

    public String getOrderType() {
        return orderType;
    }

    public void setOrderType(String orderType) {
        this.orderType = orderType;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getIntegral() {
        return integral;
    }

    public void setIntegral(Integer integral) {
        this.integral = integral;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getCdKey() {
        return cdKey;
    }

    public void setCdKey(String cdKey) {
        this.cdKey = cdKey;
    }


    public Integer getType() {
        return type;
    }

    public void setType(Integer type) {
        this.type = type;
    }

    public Integer getStock() {
        return stock;
    }

    public void setStock(Integer stock) {
        this.stock = stock;
    }


    public Float getMarketValue() {
        return marketValue;
    }

    public void setMarketValue(Float marketValue) {
        this.marketValue = marketValue;
    }
    
    public String getHeadImg() {
        
        if(imgList != null){
            for (IntegralGoodsImg integralGoodsImg : imgList) {
                if(integralGoodsImg.getType() == 1){
                    headImg = integralGoodsImg.getSrc();
                    break;
                }
            }
        }
        
        return headImg;
    }

    public void setHeadImg(String headImg) {
        this.headImg = headImg;
    }

    public Integer getSaleNum() {
        return saleNum;
    }

    public void setSaleNum(Integer saleNum) {
        this.saleNum = saleNum;
    }

    public List<String> getImgUrlList() {
        return imgUrlList;
    }

    public void setImgUrlList(List<String> imgUrlList) {
        this.imgUrlList = imgUrlList;
    }

    public Date getShelfDate() {
        return shelfDate;
    }

    public void setShelfDate(Date shelfDate) {
        this.shelfDate = shelfDate;
    }

    public Date getObtainedDate() {
        return obtainedDate;
    }

    public void setObtainedDate(Date obtainedDate) {
        this.obtainedDate = obtainedDate;
    }

    public static Specification<IntegralGoods> where(final IntegralGoods entity) {
        return new Specification<IntegralGoods>() {

            @Override
            public Predicate toPredicate(Root<IntegralGoods> root, CriteriaQuery<?> query, CriteriaBuilder cb) {

                List<Predicate> predicates = new ArrayList<Predicate>();

                //商品名称
                String name = entity.getName();
                if (StringUtils.isNotBlank(name)) {
                    predicates.add(cb.like(root.<String>get("name"), "%" + name + "%"));
                }

                // ===========等于====================
                // uid
                String uid = entity.getUid();
                if (StringUtils.isNotBlank(uid)) {
                    predicates.add(cb.equal(root.<String>get("uid"), uid));
                }

                // tid
                String tid = entity.getTid();
                if (StringUtils.isNotBlank(tid)) {
                    predicates.add(cb.equal(root.<String>get("tid"), tid));
                }

                // 积分
                Integer integral = entity.getIntegral();
                if (integral != null) {
                    predicates.add(cb.equal(root.<String>get("integral"), integral));
                }

                // 类型
                Integer type = entity.getType();
                if (type != null) {
                    predicates.add(cb.equal(root.<String>get("type"), type));
                }

                //库存
                Integer stock = entity.getStock();
                if (stock != null) {
                    predicates.add(cb.equal(root.<String>get("stock"), stock));
                }
                //激活码
                String cdKey = entity.getCdKey();
                if (StringUtils.isNotBlank(cdKey)){
                    predicates.add(cb.equal(root.get("cdKey"),cdKey));
                }

                //商品编号
                String goodsCode = entity.getGoodsCode();
                if (StringUtils.isNotBlank(goodsCode)){
                    predicates.add(cb.equal(root.get("goodsCode"),goodsCode));
                }

                //上架标识
                Integer shelfFlag = entity.getShelfFlag();
                if (shelfFlag != null){
                    predicates.add(cb.equal(root.get("shelfFlag"),shelfFlag));
                }


                return query.where(predicates.toArray(new Predicate[predicates.size()])).getRestriction();
            }
        };
    }

}
View Code

相关文章:

  • 2022-12-23
  • 2021-08-04
  • 2021-08-15
  • 2021-07-22
  • 2021-08-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-05-31
  • 2021-06-27
  • 2022-01-04
  • 2022-02-27
  • 2021-09-21
相关资源
相似解决方案