本文主要是介绍如何实现商品规格参数查询代码(通过三级类目的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的信息并且显示在浏览器)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!