导入图片后截取_微服务项目第36天:导入数据到索引库
今天是刘小爱自学Java的第166天。
感谢你的观看,谢谢你。
学习计划安排,导入需要的数据到索引库:
- 对于all字段的拼接。
- spu中附带的skus集合。
- sku中对应的price。
- specs规格参数。
上述也就是我们前几天一直在分析的数据,也就是对应Goods这个实体类,同时将这个实体类和索引库对应起来。
那导入什么数据?也就是164天整合的那些已经实现了的业务。
但是只是查询出来了,现在还要将这些数据一一对应存储到Goods对象中,再导入索引库。
只能说真的太复杂了,一个方法写了一百多行代码,这是我迄今为止写的最长最复杂的了。
一、all数据
包含商品标题、商品分类以及品牌等数据。
①商品分类
分类有三级分类,从数据库中查出的是一个大小为3的分类集合。
而我们所需要的是这三个分类拼接成的一个字符串,所以遍历将其拼接,当然这里是用的Stream流批量获取商品分类名,并以“,”完成拼接。
②商品品牌
因为商品只可能对应一个品牌,所以查询到的本身就是一个品牌对象,不用多说。
③all字段拼接
我们需要spu的标题,商品对应的三级分类以及品牌名,将其拼接成一个字符串,这也是为何第①步要将三级分类转换成字符串的原因。
二、skus和price数据
同样的道理,通过fegin客户端查询到sku数据,是一个sku集合。
现在问题来了,我们并不是需要sku中的所有数据,而是其中的4个,该怎么办?
①map来代替spu实体类
在Java中有一个map集合,确定好泛型后,可以一定程度上代替Java中的对象。
这就好比我们重新创建了一个实体类,类的属性只有上述中的4个,但显然这里用map更合适。
②遍历导入需要的sku数据
只需要id,price,title以及image四个数据。
注意:title这个字段,spu中有这个字段,sku中也有这个字段,那它们有什么区别呢?举一个例子说明下
- spu中title:小米10。
- sku中title:小米10 8G+256G 玫瑰金 移动联通电信4G手机 双卡双待。
sku等于是spu的一个垂直细分,多个sku共用一个spu。
③图片数据
sku中商品对应的图片是有多张的,但是展示给用户看的就只有一张,所以这里截取第一张图片即可。
使用apache提供的api即可完成图片的截取:substringBefore()的使用。
关于这块的操作是最简单的了,所以我将stream的用法在此做一个对比讲解。
上述中①是使用的stream流,②就是使用的for循环,这两种方式实现的结果是一样的。
用哪种方法都可以,但是最好要保证自己都会用,不然若是别人写stream流看不懂怎么办?
三、specs规格参数
这个代码编写起来也是最复杂的,将其分成查询数据和存储数据两个部分:
specs这个字段当初设定的时候就是一个map集合。
①获取specs中的key
它的key来自spec表,对应的业务也就是根据条件查询规格参数。
我们当初设定的时候,该方法参数有三个,也就是gid、cid、searching,这些条件可以有也可以没有。
这里的话:gid为null,cid为第三级商品分类,并且searching设定为true表示只查询规格参数中需要搜索的字段。
②获取specs中的value
它的value来自于spu_detail表,对应的业务也就是根据spu查询spuDetail。
关于spu_detail表和规格参数相关的有两个字段:generic_spec和special_spec。
也就是通用规格参数和特有规格参数,其实很好理解:
- 通用规格参数:比如操作系统都是Android、比如CPU都是骁龙,这些参数是通用的。
- 特有规格参数:比如内存大小,比如颜色,这些参数是通用的。。
存储在数据库中的数据是json格式的字符串,所以这里要用一个工具类转换成map集合。
关于JsonUtils这个工具类牵扯出的知识点又太多了,有时间的话专门写一遍讲解吧,大概。
反正其作用就是json与map集合之间的转换。
刚才只是从数据库中查询到了数据,现在要将查询到的数据一一对应存储到specs集合中,specs也就是在查询数据的时候创建的specs集合。
①存储规格参数中的key
查询出来的规格参数名都是需要存储的,但是其值是需要判断之后再存储的。
比如“CPU品牌”就是规格参数名,这里也就是key,“高通(Qualcomm) ”这就是规格参数值,这里也就是value。
②存储规格参数中的value
规格参数名中有一个generic字段,用来判断该参数是否为通用规格参数。
所以上述使用getGeneric()判断:
- 如果是通用规格,规格参数id获取对应的规格参数名。
- 如果不是,那么就是特有规格,获取对应的特有规格参数名。
其中chooseSegment是自定义的一个方法,用来判断是否是数据类型,比较复杂,将估计又要花不少时间。
PS:这些业务如果忘记了,我在第164天的笔记中有一个关于这些业务的总结。
再PS:又没有学完…,也还没有测试,估计会有很多问题,只能等后续发现问题了再自己在评论区补充说明了。
最后
行有不得反求诸己,我是@刘小爱
一个白天上班晚上学习的95后沪漂,不为其它,只为学会自律做好自己,也愿我的每日打卡能给你带来勇气,欢迎点赞关注和评论。
导入图片后截取_微服务项目第36天:导入数据到索引库相关推荐
- java版本号管理_微服务项目中如何管理依赖版本号?
本文是微服务项目代码组织形式三部曲中的第三篇,也是最后一篇,通过这三篇文章,相信大家对于如果组织微服务中的代码已经有了一个基本认知,前面两篇分别是: 第三篇相对来说要简单一些,本来没打算写,但是上周有 ...
- Maven父子结构的项目依赖使用以及打包依赖_微服务项目(maven父子级项目)怎么打包
Maven父子结构的项目依赖使用以及打包依赖 1:在父子结构项目中,如果要是用其他模块的类.在当前项目中的pom中 加入 其他模块的配置 <dependency><groupId&g ...
- 管理java版本号_微服务项目中如何管理依赖版本号?
本文是微服务项目代码组织形式三部曲中的第三篇,也是最后一篇,通过这三篇文章,相信大家对于如果组织微服务中的代码已经有了一个基本认知,前面两篇分别是: 微服务项目搭建,到底要不要聚合工程? 在微服务项目 ...
- 微服务03 分布式搜索引擎 elasticsearch ELK kibana RestAPI 索引库 DSL查询 RestClient 黑马旅游
分布式搜索引擎01 -- elasticsearch基础 0.学习目标 1.初识elasticsearch 1.1.了解ES 1.1.1.elasticsearch的作用 elasticsearch是 ...
- 怎么创建数据表的实体类和业务类_微服务项目第13天:商品分类业务的实现
今天是刘小爱自学Java的第143天. 感谢你的观看,谢谢你. 学习计划安排如下: 商品分类业务的初步实现. 数据模型的分析:数据表字段的设计,Java中对应的实体类,前端页面vue组件. 业务模型的 ...
- vue一级分类和耳机分类_微服务项目第13天:商品分类业务的实现
今天是刘小爱自学Java的第143天. 感谢你的观看,谢谢你. 学习计划安排如下: 商品分类业务的初步实现. 数据模型的分析:数据表字段的设计,Java中对应的实体类,前端页面vue组件. 业务模型的 ...
- 项目中最困难的部分_微服务最难的部分是什么? 您的资料
项目中最困难的部分 在本文中,我将探讨创建和开发微服务时最棘手的问题:您的数据. 使用Spring Boot / Dropwizard / Docker并不意味着您在做微服务. 仔细查看您的域和数据将 ...
- 如何把项目改成微服务项目_微服务拆分那点事
Mar. 19th 2018 BY 王保平 wangbaoping@360.cn 背景 最近参与了两个项目的开发,两个项目都有多组件,各自服务功能清晰等特点,也就是所谓的微服务,再结合以前的一些单体项 ...
- 微服务项目后台技术栈
微服务项目后台相关技术整理 主要技术 ORM框架-Mybatis Plus Mybatis Plus核心功能 MyBatis Plus与SpringBoot集成 MyBatis Plus集成Sprin ...
最新文章
- Enterprise Library 4 缓存应用程序块的设计
- SQL Server游标的使用
- Bootstrap的引用文件
- 腾讯2020校园招聘----逆序对
- mssql on linux 安装指导
- mybatis3中@SelectProvider的使用技巧
- SourceTree下载与安装 ---记录一下,如果忘记了再拿来看看
- centos7安装docker笔记
- 博弈论分析题_“博弈论”习题及参考答案
- 【超图+CESIUM】【基础API使用示例】30、超图|CESIUM -【坐标转换】世界坐标转屏幕坐标
- 数据库设计原则、表字段命名规则、索引调优建立规则
- 后缀–ize_英语常用后缀-ize
- html手写笔记照片,html手写代码学习笔记
- 数学分析 - 多元函数的微分学
- 【神经网络】一文带你轻松解析神经网络(附实例恶搞女友)
- android 自定义心电图,Android动态滚动波形图(心电图)的实现
- Ireport 导出pdf 特殊字体设置
- springboot admin整合spingcloud踩坑
- php的单元测试框架,PHP 单元测试框架 Testify | 码农软件 - 码农网
- 搜索引擎排名都选乐云seo_广州搜索引擎排名_乐云SEO