Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)十(商品的规格类型以及参数管理)

本文介绍了如何在Java网络商城项目中使用SpringBoot和SpringCloud进行商品规格类型和参数管理。包括实体类、Mapper、Service、Controller的实现,以及SPU和SKU的数据结构设计,探讨了SPU和SKU的概念及其在数据库中的表示,展示了如何通过分页查询SPU,并处理分类和品牌名称。
摘要由CSDN通过智能技术生成

import tk.mybatis.mapper.annotation.KeySql;

import javax.persistence.Column;

import javax.persistence.Id;

import javax.persistence.Table;

@Table(name = “tb_spec_param”)

@Data

public class SpecParam {

@Id

@KeySql(useGeneratedKeys = true)

private Long id;

private Long cid;

private Long groupId;

private String name;

@Column(name = “numeric”)

private Boolean numeric;

private String unit;

private Boolean generic;

private Boolean searching;

private String segments;

}

2)实体类对应的通用Mapper

在这里插入图片描述

package com.leyou.item.mapper;

import com.leyou.item.pojo.SpecParam;

import tk.mybatis.mapper.common.Mapper;

public interface SpecParamMapper extends Mapper {

}

3)实体类对应的Service,在SpecificationService当中注入SpecParamMapper 即可

在这里插入图片描述

@Autowired

private SpecParamMapper specParamMapper;

4)在SpecificationController当中

在这里插入图片描述

/*

根据组id查询参数

*/

@GetMapping(“params”)

public ResponseEntity<List> queryParamByGid(@RequestParam(“gid”) Long gid){

return ResponseEntity.ok(specificationService.queryParamByGid(gid));

}

5)完善SpecificationService

创建抛出异常的枚举

在这里插入图片描述

SPEC_PARAM_NOT_FOND(404,“商品规格参数不存在”),

完善SpecificationService

在这里插入图片描述

在这里插入图片描述

public List queryParamByGid(Long gid) {

SpecParam specParam = new SpecParam();

specParam.setGroupId(gid);

List list = specParamMapper.select(specParam);

if(CollectionUtils.isEmpty(list)){

// 没有查询到

throw new LyException(ExceptionEnum.SPEC_PARAM_NOT_FOND);

}

return list;

}

6)重新运行并测试

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3、SPU和SKU数据结构

(1)什么是SPU和SKU

SPU: Standard Product Unit(标准产品单位),一组具有共同属性的商品集

SKU: Stock Keeping Unit(库存量单位),SPU商品集因具体特性不同而细分的每个商品

以图为例来看:

在这里插入图片描述

  • 本页的华为就是一个商品集(SPU)

  • 因为颜色、内存等不同,而细分出不同的手机,如亮黑色128G版。(SKU)可以看出;

  • SPU是一个抽象的商品集概念,为了方便后台的管理。

  • SKU才是具体要销售的商品,每一个SKU的价格、库存可能会不一样,用户购买的是SKU而不是SPU

(2)数据库设计分析
1)思考分析

弄清楚了SPU和SKU的概念区分,接下来我们一起思考一下该如何设计数据库表。

首先来看SPU,大家一起思考下SPU应该有哪些字段来描述?

  • SPU共享数据

id:主键

title:标题

description:描述

specification:规格

packaging_list:包装

after _service:售后服务

comment:评价

category_id:商品分类

brand_id:品牌

似乎并不复杂

  • 再看下SKU(每个商品的特殊属性)

大家觉得应该有什么字段?

id:主健

spu_id:关联的

spuprice:价格

images:图片

stock:库存颜色?

内存?

硬盘?

上述做法是错误的:SKU的特有属性也是变化的。

不同分类特有属性也不一定相同。

2)SKU的特有属性

SPU中会有一些特殊属性,用来区分不同的SKU,我们称为sKU特有属性。如华为META10的颜色、内存属性.不同种类的商品,一个手机,一个衣服,其SKU属性不相同。

同一种类的商品,比如都是衣服,SKU属性基本是一样的,都是颜色、尺码等。

这样说起来,似乎SKU的特有属性也是与分类相关的?事实上,仔细观察你会发现,

SKU的特有属性是商品规格参数的一部分∶

也就是说,我们没必要单独对SKu的特有属性进行设计,它可以看做是规格参数中的一部分。这样规格参数中性可以标记成两部分:

  • 所有sku共享的规格属性〈称为通用属性),我们记录在SPU表中。

  • 每个sku不同的规格属性(称为特有属性),我们记录在SKU表中。

回一下之前我们设计的tb _spec_param表,是不是有一个字

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值