今天是刘小爱自学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后沪漂,不为其它,只为学会自律做好自己,也愿我的每日打卡能给你带来勇气,欢迎点赞关注和评论。

【微服务】165:导入数据到索引库相关推荐

  1. 导入图片后截取_微服务项目第36天:导入数据到索引库

    今天是刘小爱自学Java的第166天. 感谢你的观看,谢谢你. 学习计划安排,导入需要的数据到索引库: 对于all字段的拼接. spu中附带的skus集合. sku中对应的price. specs规格 ...

  2. 【微服务】166:导入数据到索引库

    目录 一.all数据 二.skus和price数据 三.specs规格参数 最后 今天是刘小爱自学Java的第166天. 感谢你的观看,谢谢你. 学习计划安排,导入需要的数据到索引库: 对于all字段 ...

  3. (转)淘淘商城系列——导入商品数据到索引库

    http://blog.csdn.net/yerenyuan_pku/article/details/72902073 上文我们把商品数据导入到索引库中的Service层代码编写完了,本文我们将再来把 ...

  4. (转)淘淘商城系列——导入商品数据到索引库——Service层

    http://blog.csdn.net/yerenyuan_pku/article/details/72894187 通过上文的学习,我相信大家已经学会了如何使用Solrj来操作索引库.本文我们将把 ...

  5. 微服务框架 SpringCloud微服务架构 26 数据聚合 26.5 多条件聚合

    微服务框架 [SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务] SpringCloud微服务 ...

  6. 一文详解微服务架构的数据设计

    微服务是一个软件架构模式,对微服务的讨论大多集中在容器或其他技术是否能很好的实施微服务这些方面. 本文将从以下几个角度来和大家分享在微服务架构下进行数据设计需要关注的地方,旨在帮助大家在构建微服务架构 ...

  7. 跟益达学Solr5之从MySQL数据库导入数据并索引

    最近有小伙伴跟我抱怨说:益达,最近博客更新的有点慢呐.其实不是我变懒了,我是不想因为数量而降低了博客的质量,我需要抱着对你们负责的态度来写每一篇博客,绝不能含糊啊,所以,还望大家多多包涵呐. 今天群里 ...

  8. (转)淘淘商城系列——导入商品数据到索引库——dao层

    http://blog.csdn.net/yerenyuan_pku/article/details/72889058 我们先来看看我们要导入数据的sql语句并且查看查询结果.  从上图可知我们需要从 ...

  9. 微服务场景下数据抽取与统计

    案例小故事 某公司的技术架构体系目前还是以集群扩展体系为主,集群扩展体系架构如图9-1所示.在这种体系结构中,可以看到应用都是单块结构,但是单块结构的应用具有扩展性,通过部署在多个Tomcat上实现应 ...

最新文章

  1. mysql关联表插入-php环境中
  2. java 枚举 被继承_enum不能被继承
  3. Python面向对象2:类与对象的成员分析及self
  4. 学习VIM编辑器的使用
  5. 存储器的保护(三)——《x86汇编语言:从实模式到保护模式》读书笔记20
  6. hdu 5045 Contest(状态压缩DP)
  7. 用python快速合并代码(方便软著申请)
  8. ubuntu安装Qt开发环境
  9. 只腐蚀毛刺 腐蚀算法_图像的腐蚀 膨胀及细化
  10. 【转】有关Oracle随机字符串的生成方法及具体应用
  11. 【爬虫剑谱】三卷4章 拾遗篇-关于lxml库下etree模块中Xpath表达式的使用小结
  12. IEEE Access 模板 图片编辑
  13. Excel怎么批量设置图片大小
  14. 概率 (菜鸡 dalao轻喷
  15. 【245】◀▶IEW-Unit10
  16. 仿真工具打开raw报cannot load library XXX.dll错误
  17. 考研英语 - word-list-22
  18. VIM中ctags的简单使用教程
  19. python支持保护类型_1.7. 保护、继承、多态
  20. 随手写个node爬虫

热门文章

  1. Unsupervised Learning: Deep Auto-encoder
  2. 计算机考研跨审计好跨嘛,跨专业考研,快来看看你符不符合条件
  3. 对接亚马逊 SP-API(Amazon Selling Partner API) 第四章:签名
  4. vue3 滑动验证组件
  5. 我在国企做软件开发这4年。。
  6. 电脑可以聊微信但是无法上网页的解决方法
  7. VCPKG安装opencv后VS2019无法找到viz.hpp
  8. 大数据「杀熟」:冤枉,也不冤枉
  9. 科学记数法在c语言中表示方法,c/c++开发分享在C语言中阅读科学记数法
  10. CUDA C/C++ 流和并发