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

感谢你的观看,谢谢你。


学习计划安排如下:

终于把商品新增业务做完了,说个老实话我若是发点狠,一天时间多写点搞定就好了。

一篇文章的话,观感也好,结果硬生生地被我拖成了3篇文章。

一、请求相关以及实体类

无论是查询也好还是新增也罢,都是一样的思路,先确定请求相关的4块内容:


①请求路径/方式

真实路径也就是goods,请求方式为Post,一般新增业务请求都是Post请求。

这也很好理解,get请求是将参数拼接到路径后面的,而新增的请求参数是有很多的,如果用get请求,那请求路径就很长一串的了。

②返回值

通过找到对应的前端代码,可以判断其返回值为空,一般新增业务返回值都为空。

③实体类和请求参数

前端页面中的数据、Java中的数据以及数据库中的数据它们之间是如何对应起来的呢?


此处Java中的数据也就是Spu这个实体类,而json格式的数据就是前端和后台沟通的桥梁:

  • 通过@RequestBody将请求中的json数据转换成Java实体类。
  • 通过@ResponseBody将响应的Java实体类数据转换成的json数据。

而数据库,因为我们是使用的Mysql数据库,所以对应的就是数据表。

而我们观察请求数据除了对应Spu实体类本身的属性外,还多出了两个属性,是个sku集合,一个是spuDetail。

所以给Spu实体类中添加这两个属性,便于接受请求时将数据转换成Java对象。

但是Spu对应的数据表中并没有这两个字段,故用@Transient说明该字段是瞬态的。

瞬态字段就可以理解成接受请求考虑该字段,但在对数据库操作时不考虑该字段。

二、Java代码编写

确定了请求和实体类,Controller层代码也就直接确定了。

1Controller层代码


使用注解@RequestBody即将前端的json数据转换成Java实体类对象。

有@RequestBody也有@ResponseBody,那为何一般都不写@ResponseBody呢?

因为@RestContoller就包含了@Contoller和@ResponseBody这两个注解。

处理后的数据都是转换成了json数据再响应给前端页面的。

响应状态码也就是201,商品新增完成,其中build表示响应数据为空。

2Service层代码

这块就比较复杂了,因为涉及到了几张数据表的操作,代码很长,分成两大块来说明。


有一点值得注意的是

此处涉及到多张数据表的操作,所以需要使用到事务,要么都成功,要么都失败。

①新增Spu

使用通用mapper根据对象选择性新增数据即可,当然这里有些细节要注意:

  • spu数据表中的字段有一些前端json数据中是没有赋值的,比如id,Valid这些,所以自行添加。
  • 像Saleable这个字段代表了是否上下架,这个是根据具体需求来设定是否上下架。
  • 关于创建时间和修改时间这两个字段也要做一个修改,创建时间一般就是当前时间,而前端数据中的创建时间就是修改时间。

总之就是一些比较简单的细节问题,初次写业务很容易忽视掉,多写几次就好了。

②新增SpuDetail

关于spu详情,本来就是spu中的属性,只不过由于字段名较长就将其独立成一张表了。


③Sku新增

因为每次新增会有多个sku,是一个集合,所以需要将其遍历并一一完成新增操作。

关于其时间相关属性的设置也是一样的。

④初始化stock

sku代表的就是一个确定的商品,每一个sku都对应有库存量stock这个属性。

所以每次遍历的时候都要初始化stock,并将其添加到库存集合中。

最后再将库存集合批量添加到数据库中。

关于批量新增

通用mapper中继承InsertListMapper接口可以实现批量新增,这个以前也说明过

三、说明

上述就是对新增操作的一个完整说明,代码写完之后,在前端页面保存商品信息。

会向服务器发送请求,服务器接收请求后会根据上述写的代码,依次对数据库中的4张数据表完成新增操作。

此外因为新增操作涉及到了4张数据表,都有其对应的Java实体类,有的以前就编写过,此次文章中就没有一一都说明。

最后

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

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

新增字段赋值_微服务】155:商品新增业务(完)相关推荐

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

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

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

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

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

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

  4. 两个server 两个数据库 微服务_微服务的数据库设计

    单独的数据库: 微服务设计的一个关键是数据库设计,基本原则是每个服务都有自己单独的数据库,而且只有微服务本身可以访问这个数据库.它是基于下面三个原因. 优化服务接口:微服务之间的接口越小越好,最好只有 ...

  5. mqtt发布json数据_微服务实战:从架构到发布(一)

    引言:"微服务"是当前软件架构领域非常热门的词汇,能找到很多关于微服务的定义.准则,以及如何从微服务中获益的文章,在企业的实践中去应用"微服务"的资源却很少.本 ...

  6. python微服务架构设计模式_微服务架构设计模式 PDF 电子书 百度云 网盘下载

    你还没有注册,无法下载本站所有资源,请立即注册! 您需要 登录 才可以下载或查看,没有帐号?立即注册 x java自学网(http://www.137zw.com)-java论坛,java电子书推荐: ...

  7. 微服务认证模式_微服务之“网关模式”

    定义 API网关是一个服务器,它是系统中的单个入口点,用户对API网关进行单一呼叫,然后API网关调用每个相关的微服务器.它类似于面向对象设计的Facade模式.API网关封装内部系统架构,并提供针对 ...

  8. 什么是微服务_微服务系列笔记:什么是微服务?

    作者 | 莫无崖 导语 微服务(Microservice Architecture)是近几年流行的一种架构思想,它的概念没有很明确的指出.ThoughtWorks 公司的首席科学家 Martin Fo ...

  9. C++轻量级微服务_微服务技术栈:API网关中心,落地实现方案

    一.服务网关简介 1.外观模式 客户端与各个业务子系统的通信必须通过一个统一的外观对象进行,外观模式提供一个高层次的接口,使得子系统更易于使用: 简单说一下外观模式,网关和这个模式很像,但是比外观模式 ...

最新文章

  1. 简单比较Python的数据持久化操作
  2. 用python画烟花-python 实现漂亮的烟花,樱花,玫瑰花
  3. tf.dtypes.cast
  4. 在python中嵌入c/c++
  5. Java集合篇:HashMap 与 ConcurrentHashMap 原理总结
  6. 在JavaFX程序中嵌入Swing内容
  7. 什么是指利用计算机和现代,现代计算机一般指什么计算机?
  8. java中多线程模拟(多生产,多消费,Lock实现同步锁,替代synchronized同步代码块)...
  9. 如何设置VSCode以提高生产力
  10. iOS开发之数据存储之Preference(偏好设置)
  11. python能做什么毕业设计-毕业设计涉及到python?看我用Python优雅的写论文!
  12. 云豹直播源码v8.2
  13. 阿里巴巴矢量图标库在线链接使用图标
  14. 给加西亚的信——余世维——赢在执行
  15. QOS中 PQ,CQ.RR,WFQ,CBWFQ,LLQ区分
  16. 微软面向大众市场发布Office 2010
  17. 【奥黛丽赫本】女神一样的优雅
  18. RF自动化测试系列-第三篇 测试数据
  19. 【STM32笔记】低功耗模式配置及避坑汇总
  20. 操作系统(一)什么是操作系统

热门文章

  1. php artisan 命令
  2. hdu 3501 欧拉函数
  3. 判断任意控制台输入的十进制数是否为水仙花数
  4. SVN提交,提示“remains in conflict”错误
  5. Python解释器有哪些?Python解释器种类
  6. Zabbix 3.2.6通过SNMP和iDRAC监控DELL服务器
  7. js tool 方法之删除数组指定项
  8. VxWorks6.6 pcPentium BSP 使用说明(二):创建启动盘
  9. Window 7 下的某些服务不能随便禁用! 无法立即删除.exe文件,因为禁用了Application Experience服务。...
  10. Android注册会员系统返回上一步时如何保存信息