如何实现商品规格参数查询代码(通过三级类目的cid查找数据表里全部对应cid的信息并且显示在浏览器)

本文主要是介绍如何实现商品规格参数查询代码(通过三级类目的cid查找数据表里全部对应cid的信息并且显示在浏览器),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

如何实现规格参数查询代码

首先我们要知道一个问题,就是该如何实现显示商品规格参数呢?商品规格参数是一个个数据,因此你避免不了要写这些数据,这些数据是从哪里来的?前端页面也可以写,但如果前端页面没有写,他只是留了一个空位,让我们后端去显示,我们就需要自己去编写。

首先凡是涉及到数据,我们都离不开pojo类,要写这个pojo类,我们是需要先去数据库查看一下对应的信息,首先我们要搞清楚我们编写好的东西在哪里显示?因为我们编写的是三级类目时,右边空白地方要显示的商品规格参数,所以我们要找到对应的数据库表,看看我们要显示哪些信息,我们找到下面的数据库表,发现有三个参数。id,cid和name,这三个参数是什么意思呢?id和name比较好理解,cid就是当前商品的类目,我们这里类目是用这种方式去区分,数字号码不同,类目就不同,数字号码一样,类目就一样。
在这里插入图片描述
由上图可知,我们封装的三个对象。所以下面我们就要开始进行封装,但是我们应该放到哪个模块里面去呢?我们现在的模块有网关模块,上传文件模块,商品模块,注册中心模块。

那不用质疑,就是放在商品模块里面,商品模块有服务模块,还有接口模块,那就是放在接口模块里面。如果你放在上传文件模块的话,这个不太好,因为上传文件模块主要是负责上传文件的,我们这里很难说有没有上传文件。而且这种模块最好放在通用模块里面,因为其他微服务可能也需要。

这是我们写的pojo
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
还需要这个实体类。

为什么两个都需要呢?不懂的话可以看看我上一篇博客,我上一篇博客里面有写到,因为我们在前端定义了两种方法,针对两种不同的情况:
第一种是你点击商品类目到父节点的情况,因为商品类目有一级类目,二级类目三级类目,三个类目,其中第一级和第二级为父节点,如果你点击的是父节点,我们前端显示商品的方法就是false,然后就是显示param这类的方法。

第二种是你点击商品类目到子节点的情况,也就是你点击了三级类目,这个时候就会触发前端的机关,显示商品的方法为true,所以就会触发引用Group类方法,所以就会在右边显示商品的列表。

因此就会有这两种实体类。

在这里插入图片描述
我们再看看这个表,来分析一下这个表,首先这个表是来自tb_spec_group这个数据表,其次,他的主键是Id,上面那个Id的注释就代表了这个意思,然后下面那个注解表示的是商品回显,封装了三个方法分别是商品id,商品类别id,还有商品名字,至于最下面那个是一个商品的参数列表,一个List集合,但是这个在我们当前的数据库里面没有显示,所以我们需要加上一个忽视的注解。

我们再来看看另一个方法,特别要注意这个注释,首先其他没什么问题,基本上都是一些基本方法的封装跟注释,那红色框圈出来的注释是什么意思?因为numeric在数据库里面的意思是关键词的意思,如果你不加这个注释,他就默认你是调用数据库里面的关键词,所以需要加上这个来声他只是一个字段,特别要注意的是,双引号里面还有一个’'单引号。
在这里插入图片描述
我们封装完方法当然是要建立一个mapper类啦。你想要调用数据库里面的数据,有四步少不了:封装pojo类,继承Mapper类,编写业务逻辑Service类,最后用controller类进行截取方法和调用Service。

在这里插入图片描述
我们这里注意一下,为什么我们mapper创建了两个类?但是service就创建了一个类,因为这里我们有两个数据库,不能用同一个的mapper去操作这两个数据库,为什么呢?因为两个数据库是对应两个操作方法,这样你在封装方法的时候使用起来比较方便,如果你把两个mapper方法封装在同一个类里面,那调用起来就会比较复杂。但是为什么service方法只有一个?因为我们封装mapper的方法,目的也只是想要调用它来操作数据库,而且这两个数据库是有关联的,所以我们可以写在同一个service方法里面。不仅如此,我们还可以写入同一个controller方法里面。
在这里插入图片描述
接下来我们开始编写controller方法,首先去声明他是个controller的方法,然后我们通常一般做的就是截取他的地址,截取地址需要在浏览器中获得,这个我们先不写,到后来再写。
在这里插入图片描述
我们先去封装这个service方法,到后来发现我们需要截取地址,具体需要截取什么地址呢?因为我们这里有两个数据库需要解决,一个是参数组,另一个是参数表。

我们可以选择先后顺序,可以先去解决参数组。

那么我们就要从浏览器中截取数据,该怎么截取数据呢?我们可以点击最后一个类目,也就是三级类目,然后看看浏览器返回一个什么地址给我们。结果如下第二张图:
在这里插入图片描述
在这里插入图片描述
api和api前面的都是网关前缀跟基础路径,后面的item则是网关里面配置的访问item微服务的地址,最后,spec和groups才是我们要截取的对象。

可以看到他请求方法是GET

所以我们需要GetMapping

在这里插入图片描述
本来我们的路径应该是这样的,但是我们可以把spec放在最外层方法,用RequestMapping装上地址,然后去截取groups/3,但是,这个3是我们刚刚点击浏览器一个组件的时候显示出来的数据,表示当前类目id,其他类目的id不是3,我们不可能直接就截取这个3,因为他会改变,所以我们需要用占位符去表示它,相当于给个位置,以后传入什么参数我们就接受它,然后接收他并且编写业务逻辑。

在这里插入图片描述
写好之后如下所示,凡是我们用来显示商品信息数据的时候,我们肯定要用ResponseEntity,具体泛型是什么,就决定了你返回的东西是什么,那你想想我们要返回的是什么?我们的目的是什么?我们的目的就是在这个浏览器中返回参数组信息,参数组信息是什么,参数组信息就是一个列表,所以我们这里就需要返回一个List列表,并且在把封装的Group传进来,后面那个注解是吧GetMapping中的占位符进行一个截取,并且传入参数
在这里插入图片描述
然后这里我们编写去调用service里面的方法,虽然这个方法我们在service里面还没开始写,但是我们可以先写这个方法,然后再去service里面去编写,这个方法前面的返回值是根据ResponseEntity里面的泛型来决定的,泛型是什么,返回值就是什么。
在这里插入图片描述
无论怎么写,我们在controller里面都少不了这个方法,因为是显示数据库里面的信息,我们要考虑到的是他不能为空,如果为空的话,我们就要执行ResponseEntity里面的404方法
在这里插入图片描述
这可是我们要实现的方法,通俗来讲就是使用cid去查询参数组。这也是我们service里面那个方法需要做到的东西。
在这里插入图片描述
我们在service里面添加这个方法后,有一点需要注意,就是这个返回值,因为我们之前在controller方法里面写了返回值,就是这个,所以Service里面一样要这个返回值,不然在controller里面无法返回给List《SpecGroup》,你想返回给别人,你必须要先跟别人一样嘛
在这里插入图片描述
我们要记住,如果在数据库里面查找数据,也就是你在浏览器输入一个关键词,然后在数据库里面查找数据,肯定用的是Mapper里面的select方法。具体看用哪一个而已,这里不难看出是用第一个,因为有SpecGroup record
在这里插入图片描述
这样的话我们就需要一个参数record,但是这个是什么参数呢?其实这个就是你的数据表里面属性名的参数,因为你想要通过关键词去查找数据库里面的数据,你必须要告诉Mapper你当前的数据表里面有哪些属性名,他才能做好一个分类,哪些关键词对应哪个属性名,分类好之后才能方便他查找,如果不分类好的话,可能会有重复的数据。

那我们该怎么去拿属性名呢?其实我们之前已经封装好方法了,就是我们的pojo类,而且根据上图所示,它也需要我们传入pojo类的对象。

在这里插入图片描述
所以我们先需要new一个对象,因为pojo类方法都是get,set方法,set方法就是传入参数用的,我们把在浏览器中接收到的cid参数传入pojo类,然后调用Mapper方法的select方法并且传入record(record的cid参数已经在上面被改变),Select的作用就是通过关键词去查找对应数据,当然查找到的数据就是数据表的关键词那一行。

然后去运行,结果如下。
在这里插入图片描述
大家不要以为我们上面讲的关键词搜索数据库数据指的是有个输入框给你,然后输入关键词,然后点击搜索就能搜索到数据,不是这样的。我们这里指的是,当你点击到第三级类目,它就会自动向浏览器传入参数cid为3,然后把这个cid传到mapper那里进行再数据库里面搜索cid为3的信息,可以看看下面,假如你的cid为76,他就会把cid为76的全部数据显示在浏览器,cid为3也是同样道理,这就是他工作的方式。

在这里插入图片描述

总结一下就是,首先你要去封装pojo对象,具体封装哪些属性,你可以去前端页面看,也可以去浏览器看,如果还是没有的话,你可以直接去数据库找对应的数据表看。封装完后,你就可以去编写Mapper方法,商品参数组跟商品参数表的Mapper方法要分开,但是,Service可以不用分开,把两个Mapper方法封装在里面。然后注意的是在controller里面用ResponseEntity方法,泛型为返回值,我们要清楚我们做的是什么,我们的目的是通过客户点击类目,记录下类目id,返回给用户一个数据参数组,所以我们直接在controller里面,写Service的查询数据参数组的方法,凡是涉及到这些,Controller里面一定要写的方法就是判断方法,判断是否为空,为空的话就是返回404错误。然后在service里面,调用mapper里面的Select方法,因为查询数据肯定要调用Select方法,然后new一个对应的参数组的pojo类,并且传入浏览器发送过来的cid,set到pojo里面,再返回this的Mapper方法,传入set好的pojo,最终在controller里,返回ok方法并且传入返回值。

这篇关于如何实现商品规格参数查询代码(通过三级类目的cid查找数据表里全部对应cid的信息并且显示在浏览器)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/182838

相关文章

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

Nexus安装和启动的实现教程

《Nexus安装和启动的实现教程》:本文主要介绍Nexus安装和启动的实现教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Nexus下载二、Nexus安装和启动三、关闭Nexus总结一、Nexus下载官方下载链接:DownloadWindows系统根

MySQL存储过程之循环遍历查询的结果集详解

《MySQL存储过程之循环遍历查询的结果集详解》:本文主要介绍MySQL存储过程之循环遍历查询的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言1. 表结构2. 存储过程3. 关于存储过程的SQL补充总结前言近来碰到这样一个问题:在生产上导入的数据发现

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

Java中Map.Entry()含义及方法使用代码

《Java中Map.Entry()含义及方法使用代码》:本文主要介绍Java中Map.Entry()含义及方法使用的相关资料,Map.Entry是Java中Map的静态内部接口,用于表示键值对,其... 目录前言 Map.Entry作用核心方法常见使用场景1. 遍历 Map 的所有键值对2. 直接修改 Ma

MySQL 横向衍生表(Lateral Derived Tables)的实现

《MySQL横向衍生表(LateralDerivedTables)的实现》横向衍生表适用于在需要通过子查询获取中间结果集的场景,相对于普通衍生表,横向衍生表可以引用在其之前出现过的表名,本文就来... 目录一、横向衍生表用法示例1.1 用法示例1.2 使用建议前面我们介绍过mysql中的衍生表(From子句