今天是刘小爱自学Java的第150天。
感谢您的关注,感谢您的支持。
今天的学习计划如下:
昨天完成了商品规格参数组相关业务,今天继续开发规格参数的实现。
了解了SPU与SKU的概念,并着手分析SPU数据表的设计。
一、规格参数业务实现
1. 需求分析
昨天,我们已经完成了规格参数组的业务实现,用户在点击商品分类时,可以看到该分类下的规格参数组。例如,"手机"这一商品分类下,规格参数组包括主体、基本信息和操作系统等。
今天的目标是:当用户点击某个规格参数组时,跳转至该规格参数组下的规格参数页面,展示该组的所有规格参数。为了实现这一需求,我们需要从数据库中获取数据,当前业务未完全完成,因此暂时显示“该分组下没有参数”。
2. 请求相关分析
在处理请求时,涉及到四个关键内容:
请求路径:我们定义的路径是spec/params。
请求方式:使用GET请求。
请求参数:主要是gid,即规格参数组的ID。
返回值:返回的是一个规格参数数组。
确认了这些内容后,我们便可以开始编写后端代码了。
3. 实体类与数据表设计
在定义实体类时,有一个需要特别注意的地方:numeric是MySQL的关键字,使用时可能会产生冲突。解决方案有两个:
方案一:使用@Column注解:指定关键字字段,但如果有多个字段需要处理,则每个字段都要使用注解标明。
方案二:在配置文件中进行配置:可以在yaml配置文件中做处理,这样的配置只对MySQL数据库有效。
4. Java三层架构实现
Controller层:根据请求的相关内容,我们可以轻松编写Controller层代码。特别需要注意的是,gid参数是通过问号拼接在URL中的,因此需要使用@RequestParam注解来接收。
Service层:我们使用通用Mapper进行查询操作。由于查询条件并非主键,所以我们需要创建相应的实体类对象,将gid赋值给对象,然后通过该对象执行查询。
Mapper层:继承通用Mapper提供的Mapper接口,并在泛型中指定实体类SpecParam即可。
5. 测试
在管理后台,点击某个规格参数组后,我们能够看到该组下对应的规格参数。例如,"主体"这一规格参数组从数据库中获取到了三个规格参数。除此之外,还有以下功能:
新增规格参数的按钮。
修改规格参数的按钮。
删除规格参数的按钮。
关于这三个功能,其实现思路大致相同,因此不再赘述。
二、SPU和SKU的数据结构分析
SPU与SKU是电商系统中两个至关重要的概念。
1. 什么是SPU与SKU?
SPU:标准产品单位(Standard Product Unit),是指一类产品的集合,并不是某个具体商品。
SKU:库存量单位(Stock Keeping Unit),则是指具体的商品,通常是某种特定配置的商品。
举个例子,假设某电商平台售卖一款手机,手机的型号、颜色、内存配置等选项都可以作为SPU的一部分。通过选择不同的属性,最终组合成多个不同的SKU,例如某款手机的“陶瓷黑+8GB+128GB”就是一个具体的SKU。
2. SPU数据表设计分析
在数据库中,SPU通常分成多张表来管理。以某手机为例,假设这款手机有多种颜色和存储容量可选:
商品1:陶瓷黑,8GB+128GB内存等配置。
商品2:亮银版,8GB+256GB内存等配置。
无论是商品1还是商品2,它们的SPU是相同的,只是具体的配置不同。SPU表通常包含如下字段:id、商品名称、品牌ID、副标题、商品描述、包装方式、售后服务等。
由于商品描述字段往往很长,因此通常会将这些描述性字段拆分到另一张表中进行存储。
最后
“行有不得反求诸己。” — 刘小爱
这样,今天的学习进度就总结完毕了。