今天是刘小爱自学Java的第149天。

感谢你的观看,谢谢你。

学习计划安排如下:

  • 这几天的学习才是电商网站的精髓:商品的数据结构分析,目测要花个几天的时间。
  • 由简入难依次学习,当然由于我个人的进度问题,导致今天只学了一个商品规格组。

一、商品规格数据结构

前几天学的什么商品分类,商品品牌,都是小儿科,数据结构超级简单。

但是商品的数据结构是比较复杂,如下图:

这是国内某电商网站上的某手机的参数。

这些数据如何存放到数据库中?

前面也说过,写代码前要将数据模型搞清楚:

前端页面上的数据——数据库里的数据表——Java代码中的实体类。

这三者之间的关系搞清楚了,才好写代码。

以前一张数据表就能搞定,现在显然不合适,要设计多张数据表才行,我们逐一分析:

1规格参数和商品分类

上面三张图,分别对应着空调和手机的规格参数,当然参数有很多,我只是截图了一部分。

从中我们能够看出:

  • 不同分类下的商品,比如空调和手机,其规格参数是不一样的。
  • 相同分类下的商品,比如小米手机和苹果手机,其规格参数是一样的。
  • 相同分类下的商品,规格参数一样,但其对应的值是不一样的。

所以规格参数是与商品分类相关联的,并且规格参数名和具体的规则参数值要分开保存。

如果按照传统设计,会采用横表设计:会将上图中的所有规格参数作为数据表列名。

简而言之就是:一条信息,描述所有数据,但是这样会有一个问题就是表的列名会超级多。

而我们采用竖表设计,把规格参数和规格参数值拆分成两张表,联合起来说明规格参数。

2规格参数组设计

从规格参数中我们再次能发现:规格参数是非常多的,所以将其进行了分组。

比如上图中的规格组名

  • 主体:入网型号、品牌……等等
  • 基本信息:机身长度、机身重量……等等
  • 屏幕:屏幕像素,屏幕材质……等等

这样等于是将规格参数再一次进行了垂直细分,同时规格组也是与商品分类相关联。

一个商品分类下有多个规格组,比如手机的规格组有:主体、基本信息、屏幕…等。

3规格参数设计

关于规格参数,也可以做一个分析,当然如果时间充足应该将其对应的业务代码一起讲完的。

但由于学习进度问题只能留待明天编写代码了,先做一个分析:

规格参数值它本身有一个id,同时与商品分类和规格组相关联。

当然实际上规格参数表考虑的更加地全面,还有额外的几个参数:

  • umberic:是否为数值类型,true表示数值类型,false表示不是数值类型。
  • unit:参数的单位。
  • searching:标记是否用作过滤,true表示用于过滤搜索,false表示不用于过滤。
  • segments:比如说电池容量其值是一个区间,所以需要做一个说明。

二、规格参数组业务完成

在刘小爱商城后台管理系统中,我们可以找到和规格参数相关的页面。

前端页面具体是如何编写的就不再一一分析了,只说明下其请求相关:

确认请求的四大内容:

  • 请求路径:真实路径为spec/group。
  • 请求方式:GET请求。
  • 请求参数:cid,其直接出现在了路径中。
  • 返回值:规格参数组集合。

请求相关确定完成,下面完成代码编写。

第一步确定和规格参数组对应的实体类,这个步骤太简单了,就不赘述了。

第二步Controller层代码:

关于这一层的代码实际上也就对应上和请求相关的四大内容。

注意:因为请求参数是cid,直接出现在请求路径中的,所以使用注解@PathVariable。

返回值即为查询到的规格参数集合。

第三步Service层代码:

因为是单表查询,使用通用mapper即可,mapper层只需要继承对应接口即可。

这就涉及到通用mapper中的知识点了:

如果查询参数不是主键,将参数存放到对应的实体类对象中,再根据对象查询。

查询的结果即为一个集合,如果集合不存在,抛出一个自定义的异常。

第四步在前端页面做一个测试

代码若是没问题,就会出现上述内容,从数据库中查询到了对应的数据并显示。

但是这只是完成了查询操作,还有对应的增删改操作,思路是大同小异的,一般来说查询最常见,新增相对而言复杂一点儿。

以上就是对规格参数组的说明,还有规格参数以及更难的商品属性分析,后续继续学习。

最后

行有不得反求诸己,我是@刘小爱

一个白天上班晚上学习的95后沪漂,不为其它,只为学会自律做好自己,也愿我的每日打卡能给你带来勇气,欢迎点赞关注和评论。

数据结构最佳路径代码_【微服务】149:商品数据结构相关推荐

  1. 小米商城html代码_微服务架构实战:商城的用户登录与账户切换设计、订单查询设计...

    商城的用户登录与账号切换设计 在移动商城的设计中,除商品和分类查询是完全开放权限的页面外,其他涉及个人隐私的个人信息.订单查询和购物车等都必须进行权限管理. 有关用户权限管理的功能,在这里根据移动设备 ...

  2. 微服务笔记:第一章_微服务简介|Eureka注册中心|Nacos注册中心|Nacos配置管理|Feign|Gateway服务网关

    微服务笔记:第一章_微服务简介|Eureka注册中心|Nacos注册中心|Nacos配置管理|Feign|Gateway服务网关 1. 微服务简介 1.1 服务架构演变 1.2 SpringCloud ...

  3. Spring Cloud【Finchley】实战-04将订单微服务与商品微服务分别拆分为多模块

    文章目录 Spring Cloud[Finchley]专栏 概述 Product微服务功能分析及多模块拆分 拆分原则 Step1. 调整主(父)工程的工程类型 packaging为pom Step2. ...

  4. Spring Cloud【Finchley】实战-03订单微服务与商品微服务之间的调用

    文章目录 Spring Cloud[Finchley]专栏 概述 HTTP方式之RestTemplate 方式一 (直接使用restTemplate访问URL,url写死) 方式二 (使用LoadBa ...

  5. coverity代码检测工具介绍_微服务测试之静态代码扫描

    静态代码扫描为整个发展组织增加价值.无论您在开发组织中发挥的作用如何,静态代码扫描解决方案都具有附加价值,拥有软件开发中所需要的尖端功能,最大限度地提高质量并管理软件产品中的风险. 背景 微服务架构模 ...

  6. 代码管理规范_微服务架构下代码管理规范

    当下对于代码的管理,主要采用GitLab或GitHub,然而使用git进行代码管理过程中,一般有四种开发模式,分别为主干开发主干发布,主干开发分支发布,分支开发主干发布,分支开发分支发布.四种开发模式 ...

  7. 降低代码执行中得内存消耗_微服务中使用 OpenJ9 JVM内存占用降低60%!

    专注于Java领域优质技术,欢迎关注 作者: 陈一乐 来自:陈一乐 随着微服务的普及,许多企业踏上微服务之旅. 微服务化后,应用数量可能高一个数量级.一般企业,以前三五个应用能支撑业务,微服务化之后应 ...

  8. Seata多微服务互相调用_全局分布式事物使用案例_Order-Module order微服务的配置搭建_写代码上---微服务升级_SpringCloud Alibaba工作笔记0061

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后咱们继续写这个使用seata实现分布式事物调用的案例,上节配置完 微服务的环境以后,然后我们可 ...

  9. Seata多微服务互相调用_全局分布式事物使用案例_Order-Module order微服务的配置搭建_写代码下---微服务升级_SpringCloud Alibaba工作笔记0062

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后我们接着完善我们的订单微服务 我们写完StorageService这个库存的远程调用以后 然后 ...

最新文章

  1. python源文件保存在哪里_python数据爬下来保存在哪里
  2. 【工业控制】学习喷墨打印技术 怎么能不知道波形
  3. C标准时间与时间戳的相互转换
  4. myisam数据表根据frm文件恢复数据表
  5. 小米5点位图_最新!地铁5号线、6号线部分车站文化墙设计出炉!你选哪个?
  6. Linux网络那点事
  7. Bootstrap-基于jquery的bootstrap在线文本编辑器插件Summernote
  8. 大数据之-Hadoop之HDFS的API操作_配置参数的优先级说明_以设置hdfs文件副本数量参数为案例---大数据之hadoop工作笔记0057
  9. 高性能mysql 第5章 创建高可用的索引
  10. 上海滩引爆数据中心热潮
  11. delphi 多个checkbox只能勾选一个_CAD加选无效?不可连续选择多个对象?按下这个键就正常了...
  12. 国内pinterest模式昙花一现 社交电商不该这么玩
  13. dom不刷新 vue 加数据后_vue 数据更新 dom不渲染
  14. python线程池如何调度,python线程池控制
  15. c语言中compar的用法,C/C++中关于std::string的compare陷阱示例详解
  16. bugzilla perl mysql apache windows,windows下配置bugzilla
  17. 苹果新产品中的机器学习算法
  18. android 路由器 操作系统,小米全新路由器操作系统是什么?支持什么语言?
  19. 【组网工程】cisco packet tracer 路由器组网
  20. amazon - sellercentral 之 sellercentral report - long term storage fee report

热门文章

  1. 【kafka】Kafka Fetch Session 剖析
  2. 【Redis】Redis 使用 redisson 做分布式锁 复盘 maven 依赖 netty 冲突
  3. 1.1.0-简介-P9-分布式ID生成器解决方案
  4. 【Elasticsearch】Elasticsearch 相关度评分 TFIDF
  5. Kudu : 三种Fulsh Mode
  6. Kylin 2.6.0JDBC方式访问
  7. docker中更新镜像——基于Prometheus
  8. 一个简单的例子带你理解HashMap
  9. Flask带参URL传值的方法
  10. html2canvas 阿里云图片没显示_对标“百度网盘”?阿里云网盘横空出世