数据结构最佳路径代码_【微服务】149:商品数据结构
今天是刘小爱自学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:商品数据结构相关推荐
- 小米商城html代码_微服务架构实战:商城的用户登录与账户切换设计、订单查询设计...
商城的用户登录与账号切换设计 在移动商城的设计中,除商品和分类查询是完全开放权限的页面外,其他涉及个人隐私的个人信息.订单查询和购物车等都必须进行权限管理. 有关用户权限管理的功能,在这里根据移动设备 ...
- 微服务笔记:第一章_微服务简介|Eureka注册中心|Nacos注册中心|Nacos配置管理|Feign|Gateway服务网关
微服务笔记:第一章_微服务简介|Eureka注册中心|Nacos注册中心|Nacos配置管理|Feign|Gateway服务网关 1. 微服务简介 1.1 服务架构演变 1.2 SpringCloud ...
- Spring Cloud【Finchley】实战-04将订单微服务与商品微服务分别拆分为多模块
文章目录 Spring Cloud[Finchley]专栏 概述 Product微服务功能分析及多模块拆分 拆分原则 Step1. 调整主(父)工程的工程类型 packaging为pom Step2. ...
- Spring Cloud【Finchley】实战-03订单微服务与商品微服务之间的调用
文章目录 Spring Cloud[Finchley]专栏 概述 HTTP方式之RestTemplate 方式一 (直接使用restTemplate访问URL,url写死) 方式二 (使用LoadBa ...
- coverity代码检测工具介绍_微服务测试之静态代码扫描
静态代码扫描为整个发展组织增加价值.无论您在开发组织中发挥的作用如何,静态代码扫描解决方案都具有附加价值,拥有软件开发中所需要的尖端功能,最大限度地提高质量并管理软件产品中的风险. 背景 微服务架构模 ...
- 代码管理规范_微服务架构下代码管理规范
当下对于代码的管理,主要采用GitLab或GitHub,然而使用git进行代码管理过程中,一般有四种开发模式,分别为主干开发主干发布,主干开发分支发布,分支开发主干发布,分支开发分支发布.四种开发模式 ...
- 降低代码执行中得内存消耗_微服务中使用 OpenJ9 JVM内存占用降低60%!
专注于Java领域优质技术,欢迎关注 作者: 陈一乐 来自:陈一乐 随着微服务的普及,许多企业踏上微服务之旅. 微服务化后,应用数量可能高一个数量级.一般企业,以前三五个应用能支撑业务,微服务化之后应 ...
- Seata多微服务互相调用_全局分布式事物使用案例_Order-Module order微服务的配置搭建_写代码上---微服务升级_SpringCloud Alibaba工作笔记0061
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后咱们继续写这个使用seata实现分布式事物调用的案例,上节配置完 微服务的环境以后,然后我们可 ...
- Seata多微服务互相调用_全局分布式事物使用案例_Order-Module order微服务的配置搭建_写代码下---微服务升级_SpringCloud Alibaba工作笔记0062
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后我们接着完善我们的订单微服务 我们写完StorageService这个库存的远程调用以后 然后 ...
最新文章
- python源文件保存在哪里_python数据爬下来保存在哪里
- 【工业控制】学习喷墨打印技术 怎么能不知道波形
- C标准时间与时间戳的相互转换
- myisam数据表根据frm文件恢复数据表
- 小米5点位图_最新!地铁5号线、6号线部分车站文化墙设计出炉!你选哪个?
- Linux网络那点事
- Bootstrap-基于jquery的bootstrap在线文本编辑器插件Summernote
- 大数据之-Hadoop之HDFS的API操作_配置参数的优先级说明_以设置hdfs文件副本数量参数为案例---大数据之hadoop工作笔记0057
- 高性能mysql 第5章 创建高可用的索引
- 上海滩引爆数据中心热潮
- delphi 多个checkbox只能勾选一个_CAD加选无效?不可连续选择多个对象?按下这个键就正常了...
- 国内pinterest模式昙花一现 社交电商不该这么玩
- dom不刷新 vue 加数据后_vue 数据更新 dom不渲染
- python线程池如何调度,python线程池控制
- c语言中compar的用法,C/C++中关于std::string的compare陷阱示例详解
- bugzilla perl mysql apache windows,windows下配置bugzilla
- 苹果新产品中的机器学习算法
- android 路由器 操作系统,小米全新路由器操作系统是什么?支持什么语言?
- 【组网工程】cisco packet tracer 路由器组网
- amazon - sellercentral 之 sellercentral report - long term storage fee report
热门文章
- 【kafka】Kafka Fetch Session 剖析
- 【Redis】Redis 使用 redisson 做分布式锁 复盘 maven 依赖 netty 冲突
- 1.1.0-简介-P9-分布式ID生成器解决方案
- 【Elasticsearch】Elasticsearch 相关度评分 TFIDF
- Kudu : 三种Fulsh Mode
- Kylin 2.6.0JDBC方式访问
- docker中更新镜像——基于Prometheus
- 一个简单的例子带你理解HashMap
- Flask带参URL传值的方法
- html2canvas 阿里云图片没显示_对标“百度网盘”?阿里云网盘横空出世