【Lilishop商城】No4-6.业务逻辑的代码开发,涉及到:接口入参、出参开发逻辑,及POJO的各种总结

news2024/9/27 7:20:31

 仅涉及后端,全部目录看顶部专栏,代码、文档、接口路径在: 

【Lilishop商城】记录一下B2B2C商城系统学习笔记~_清晨敲代码的博客-CSDN博客


全篇会结合业务介绍重点设计逻辑,其中重点包括接口类、业务类,具体的结合源代码分析,源码读起来也不复杂~

谨慎:源代码中有一些注释是错误的,有的注释意思完全相反,有的注释对不上号,我在阅读过程中就顺手更新了,并且在我不会的地方添加了新的注释,所以在读源代码过程中一定要谨慎啊!

目录

A1.接口入参

B1.新增类型

B2.修改类型

C1.修改业务全信息

C2.修改某几项信息

B3.删除类型

B4.查找类型

A2.接口出参

B1.新增、修改、删除类型

B2.查找类型

A3.各种pojo类型(可跳过)

B1.PO=entity 实体类(必包含)

B2.BO 业务对象(可省略)

B3.BTO 数据传输对象

B4.VO 视图模型对象(可省略)


在前面的 No4 里面没有讲过这个,是因为前面重点是登录逻辑,比较散,所以就放到这一篇单独记录接口入参出参,后面的商品模块会用到。【有遗漏的,后面随时修改记录~~~】

接口基本就是四种:增、删、改、查。我们也从这四种分析。

A1.接口入参

B1.新增类型

接口入参主要分为一下三种类型:

  1. 与其他表无关联的,基本数据类型的业务基本信息;
  2. 与其他表关联的业务基本信息,可理解为外键;
  3. 业务校验/判断的字段;
  4. 引用类型的业务基本信息(可以包含以上三种);

1.与其他表无关联的,基本数据类型的业务基本信息;

这些属性字段是属于基本数据类型的(String、Double、Integer 等等),并且是在数据表里有对应的字段的,例如:商品的商品名称、商品价格等;

2.与其他表关联的业务基本信息,可理解为外键;

这些属性字段是属于其他表的唯一标识的,可以理解为外键,这类属性大多用于有单独业务表的字段。因为主要保存外键信息,所以大多是 String 类型的,也可以使用集合、数组接收。例如:商品的商品分类、商品图册等;

3.业务校验/判断的字段;

这类属性字段,不是业务基本信息,不会存到数据表里面,大多是为了简化判断、提供校验而添加的字段,有的是前端控制传值,有的是后端处理时赋值;

4.引用类型的业务基本信息;

这个放到了最后来说,首先他肯定是业务基本信息的,也就是必要的信息,主要用于复杂的数据或者批量数据。可以直接使用引用对象来表示,也可以结合集合(List、Map等)来使用。例如:商品的商品参数、商品sku信息等;

这一类型可以包含以上三种类型,因为他是使用引用对象类型的嘛,所以属于pojo类,所以是可以结合以上三种类型的哦~~~


我们先以商品的信息为例,下面截图说明:

具体的看代码 GoodsStoreController 类。

  

   

B2.修改类型

修改的接口会有些多,主要分为以下两类;

C1.修改业务全信息

这个就是我们常见的"编辑",与新增参入参是相似的,就是修改业务的全部信息,这里就不再复述了,参照 A1 .B1 .。

C2.修改某几项信息

这个顾名思义就是修改几项信息,比如修该商品状态,只需要商品唯一标识和状态值就可以,所以可以直接传参指定几项字段,如果字段很多也可以传值引用对象。

例如:GoodsStoreController#freight 修改运费模板,这个方法,就是传递商品id和模板id。        GoodsStoreController#updateStocks 修改库存,这个方法,就是传递的引用类型的数据。 

B3.删除类型

这个就很简单啦,只需要传参业务唯一标识就好了,后端直接硬删除,后端也可以软删除~

例如:GoodsStoreController#deleteGoods 删除商品,这个方法,就是传递商品id和模板id。     

B4.查找类型

查找类型的,使用引用对象类型或者所参数都行,但是如果查找的字段条件可以复用,那么我们肯定要是用pojo引用对象类来接收参数了。

例如:分页的查找中,页码、页数等都是统一会有的,所以可以复用的。 GoodsStoreController#getByPage 方法入参就是引用类型的,其中里面的引用类型还继承了公共的分页VO~

  

A2.接口出参

出参主要分为两类,新增、修改、删除是一类,查找是一类;

B1.新增、修改、删除类型

这一类主要有两种情况操作成功返回成功信息、操作失败返回异常,一般不需要返回数据,也就是不返回data,只需要返回code和msg即可。

例如:GoodsStoreController#save 方法,成功返回 ResultUtil.success(),异常会被 GlobalControllerExceptionHandler 拦截,返回 ResultUtil.error(ResultCode.ERROR.code(), errorMsg)

B2.查找类型

这一类也是主要有两种情况操作成功返回成功信息、操作失败返回异常,操作成功一定会返回数据的,也就是会返回data,同时也需要返回code和msg。

例如:GoodsStoreController#get 方法,成功返回 ResultUtil.data(goods),操作异常和上方一样

A3.各种pojo类型(可跳过)

详细的可以看看这篇,很详细也有举例说明,就是看起来有点标题党~~~:一篇文章讲清楚VO,BO,PO,DO,DTO的区别 - 知乎

按照我的理解总结一下

B1.PO=entity 实体类(必包含)

就是实体类,对应数据表,没啥好说的

B2.BO 业务对象(可省略)

是属于后端业务逻辑的辅助数据,是在PO对象基础上添加了其他数据的,或者多个PO对象结合的,复杂业务的会使用到,简单的基本用不到。

B3.BTO 数据传输对象

通常是用于前后端之间的数据传输,可以作为请求入参和出参。他的意义是要能够完整的表达一个业务模块,所以通常用于接口入参。

B4.VO 视图模型对象(可省略)

就是需要展示的数据,是由后端传给前端的,在前后端分离架构中,通常是json类型的数据。如果不复杂或者展示的数据与业务本身差距不大,可以直接使用PO或者DTO的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/150935.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

完整iOS APP发布App Store上架流程指南

本文章的目的在于教会你如何创建ios的打包证书和如何上架假如你没有任何的打包或上架经验,参考本文有很大的收益。通常创建ios证书和上架,是需要MAC电脑的,本文重点介绍如何在没有mac电脑的情况下,创建mac证书和上架。假如你还没有…

STM32CUBEIDE-简单案例生成

STM32CUBEIDE-简单案例生成 京东链接:https://i-item.jd.com/66584659856.html 生成工程 使用STM32CUBEMX生成例程,这里使用STM32F103C8T6系统板。 新建一个工程,这里有3种新建工程方式。 ● 基于MCU/MPU新建工程 ● 基于ST模块新建工程 ●…

PCB板缺陷检测机器视觉识别算法 yolo

PCB板缺陷检测机器视觉识别算法通过pythonyolo系列网络深度学习模型对PCB电路板外观实时监测,当模型算法监测到有缺陷的PCB板时立即抓拍存档。Python是一种由Guido van Rossum开发的通用编程语言,它很快就变得非常流行,主要是因为它的简单性和…

Vue2进阶笔记

Vue2进阶笔记一、基础知识1.1 computed计算属性1.2 watch监视属性1.3 动态绑定样式1.4 列表循环渲染 key的探讨1.5 列表过滤1.6 数据监视1.7 表单收集1.8 过滤器1.9 生命周期函数1.10 nextTick1.11 动画与过渡1.12 脚手架配置跨域代理二、组件化开发2.1 演替与定义2.2 使用与注…

多线程进阶(一)锁策略,CAS及Synchronized原理

目录 前言: 常见锁策略 CAS CAS应用场景 标准库中基于CAS实现的原子类介绍 代码实现 ABA问题 Synchronized原理 锁升级 锁消除 锁粗化 小结: 前言: 通过这篇文章可以更加深入理解锁内部的一些实现原理,以及怎样描述一…

Qt 使用 Matlab函数

背景:个人的Qt项目中,需要一个图片分割算法。该算法之前在Matlab上实现过,同时转成C版本有点麻烦,因此尝试通过Qt与Matlab编程相结合的方式,实现该功能。 注意:以下所有功能及配置过程,默认已经…

CSDN竞赛21期题解

总结 (PS:这次竞赛的奖励对我诱惑力感觉没多大,因为高级背包不久前才收到一个,邹老师的两本签名书也早就拿到了,程序员杂志、帆布包也都有了,扑克牌都拿了几副了,所以还是换点其他的书比较好&a…

c语言tips-【c语言内存模型】

0.摘要 C语言是比较接近底层的语言,因此它的很多知识点是和操作系统挂钩的,例如它的内存模型,其实也是操作系统进程的内存模型,本文章就是解释进程,虚拟内存空间,内存模型的相关知识和它们之间的联系 1. 虚…

热交换器及一维平行流换热器分析(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 首先试图对热交换器的设置进行建模,并获得该过程的控制方程。使用相应的控制方程并设置边界条件并获得适当的边界值…

RHCE第五天之NFS服务器详解

文章目录一、NFS服务器简介二、NFS的使用三、客户端使用autofs自动挂载四、实验练习一、NFS服务器简介 NFS(Network File System,网络文件系统): 是FreeBSD支持的文件系统中的一种,它允许网络中的计算机(不…

Qt / Qml 视频硬解码(CUDA)中如何实现无上传硬渲染(一)

【写在前面】 很多时候,我们在对视频的解码和渲染的处理都要经过以下步骤: 软解码,视频帧位于内存。 软渲染,需要拷贝到图像然后渲染;硬渲染则需要上传纹理,然后渲染。硬解码,视频帧位于显存。…

OPengl学习(四)——顶点数组

文章目录1、 问题2、步骤2.1 激活数组2.2 指定数组的数据2.3 解引用和渲染3、例子1、 问题 1、在前面我们实现一个多彩三角形,调用三次glvertext()函数,如果在多边形,如20条边的,那么就要使用22次函数&…

【大数据之路】数据管理篇 《三》存储和成本管理 【搬运小结】

文章目录【大数据之路】数据管理篇 《三》存储和成本管理1.1数据压缩1.2存储治理项优化1.3生命周期管理1.3.1 生命周期管理策略1.3.2 生命周期管理策略1.4数据成本计量【大数据之路】数据管理篇 《三》存储和成本管理 1.1数据压缩 在分布式文件系统中,为了提高数据…

python制作课堂点名系统,从此老师对我关爱有加

前言 大家早好、午好、晚好吖 ❤ ~ 准备工作 首先我们需要准备好点名的姓名文件,使用的时候导入进去就可以开始点名了。 新建一个文本文档,将姓名设置设置好,如下: 使用系统库和第三方库都比较常规 from PyQt5.QtWidgets impo…

Attention机制的具体计算过程

一、介绍Query、Key、Value的来源一个输入,经过embedding位置编码后得到最终的输入X(512维),最终的输入X与矩阵参数WQ(512*64维)相乘,得到Query;与矩阵参数WK(512*64维&a…

Java反射机制

目录 反射问题的引出 Java程序在计算机中部署的三个阶段 反射的主要相关类 反射机制的优缺点 调优 反射常用类—Class 特点 常用方法 获取映射Class类对象的四种方式 类加载的三个阶段 加载阶段 Loading 链接阶段 Linking 验证 Verification 准备 Preparation 解…

OpenGL示例源码opengl_examples编译

下载好源码并创建编译目录opengl_build 打开CMake-GUI选择源码目录及二进制编译目录:

C#学习记录——【实例】读写ini文件

『知识有两种,一种是你知道的,一种是你知道在哪里能找到的!』—— 塞缪尔约翰逊 1、概念 C#读写ini文件之前要了解的概念:INI就是扩展名为"INI"的文件,其实他本身是个文本文件,可以用记事本打开,主要存放的是用户所做…

axios拦截器使用和知识点补充

axios拦截器使用和知识点补充axios拦截器使用axios基地址ajax知识点补充onreadstatechange事件Ajax组成部分了解get请求与post请求区别其他请求方法了解axios拦截器使用 <link rel"stylesheet" href"./lib/bootstrap-v4.6.0.css" /><style>bod…

农业机器人研究进展

文章目录一、农业机器人二、国际农业机器人现状三、我国农业机器人发展情况四、农业机器人展望五、结束语2022年9月17-18日&#xff0c;第十一届中国智能产业高峰论坛成功在厦门举办。大会主论坛上&#xff0c;CAAI副理事长、中国工程院院士、国家农业信息化工程技术研究中心研…