新增字段赋值_微服务】155:商品新增业务(完)
今天是刘小爱自学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:商品新增业务(完)相关推荐
- 微服务笔记:第一章_微服务简介|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 ...
- 两个server 两个数据库 微服务_微服务的数据库设计
单独的数据库: 微服务设计的一个关键是数据库设计,基本原则是每个服务都有自己单独的数据库,而且只有微服务本身可以访问这个数据库.它是基于下面三个原因. 优化服务接口:微服务之间的接口越小越好,最好只有 ...
- mqtt发布json数据_微服务实战:从架构到发布(一)
引言:"微服务"是当前软件架构领域非常热门的词汇,能找到很多关于微服务的定义.准则,以及如何从微服务中获益的文章,在企业的实践中去应用"微服务"的资源却很少.本 ...
- python微服务架构设计模式_微服务架构设计模式 PDF 电子书 百度云 网盘下载
你还没有注册,无法下载本站所有资源,请立即注册! 您需要 登录 才可以下载或查看,没有帐号?立即注册 x java自学网(http://www.137zw.com)-java论坛,java电子书推荐: ...
- 微服务认证模式_微服务之“网关模式”
定义 API网关是一个服务器,它是系统中的单个入口点,用户对API网关进行单一呼叫,然后API网关调用每个相关的微服务器.它类似于面向对象设计的Facade模式.API网关封装内部系统架构,并提供针对 ...
- 什么是微服务_微服务系列笔记:什么是微服务?
作者 | 莫无崖 导语 微服务(Microservice Architecture)是近几年流行的一种架构思想,它的概念没有很明确的指出.ThoughtWorks 公司的首席科学家 Martin Fo ...
- C++轻量级微服务_微服务技术栈:API网关中心,落地实现方案
一.服务网关简介 1.外观模式 客户端与各个业务子系统的通信必须通过一个统一的外观对象进行,外观模式提供一个高层次的接口,使得子系统更易于使用: 简单说一下外观模式,网关和这个模式很像,但是比外观模式 ...
最新文章
- 简单比较Python的数据持久化操作
- 用python画烟花-python 实现漂亮的烟花,樱花,玫瑰花
- tf.dtypes.cast
- 在python中嵌入c/c++
- Java集合篇:HashMap 与 ConcurrentHashMap 原理总结
- 在JavaFX程序中嵌入Swing内容
- 什么是指利用计算机和现代,现代计算机一般指什么计算机?
- java中多线程模拟(多生产,多消费,Lock实现同步锁,替代synchronized同步代码块)...
- 如何设置VSCode以提高生产力
- iOS开发之数据存储之Preference(偏好设置)
- python能做什么毕业设计-毕业设计涉及到python?看我用Python优雅的写论文!
- 云豹直播源码v8.2
- 阿里巴巴矢量图标库在线链接使用图标
- 给加西亚的信——余世维——赢在执行
- QOS中 PQ,CQ.RR,WFQ,CBWFQ,LLQ区分
- 微软面向大众市场发布Office 2010
- 【奥黛丽赫本】女神一样的优雅
- RF自动化测试系列-第三篇 测试数据
- 【STM32笔记】低功耗模式配置及避坑汇总
- 操作系统(一)什么是操作系统
热门文章
- php artisan 命令
- hdu 3501 欧拉函数
- 判断任意控制台输入的十进制数是否为水仙花数
- SVN提交,提示“remains in conflict”错误
- Python解释器有哪些?Python解释器种类
- Zabbix 3.2.6通过SNMP和iDRAC监控DELL服务器
- js tool 方法之删除数组指定项
- VxWorks6.6 pcPentium BSP 使用说明(二):创建启动盘
- Window 7 下的某些服务不能随便禁用! 无法立即删除.exe文件,因为禁用了Application Experience服务。...
- Android注册会员系统返回上一步时如何保存信息