专栏首页零基础自学Java【微服务】151:商品的分页查询

【微服务】151:商品的分页查询

学习计划安排如下:

  • 昨天学习SPU和SKU并设计了SPU数据表表,今天继续完成SKU数据表的设计。
  • 根据SPU完成对商品的分页查询,又是分页查询了,和前几天刚写的品牌分页查询几乎一样。

一、SKU数据表设计

今天对于SKU并未涉及到代码上的操作,暂且只做初步了解,也是对昨天的学习补充。

对SPU和SKU做一个简单的回顾,比如某电商网站某品牌手机有几个版本:

  • 商品①:“基佬紫”、“8G+256G”…等等
  • 商品②:“土豪金”、“16G+512G”…等等

SKU就是具体的某个商品,颜色内存都确定了,也就是订单中对商品的详细说明。

SPU就是它们共有的属性,比如名字都叫小米10,售后服务是同一个……等等。

SPU表有如下字段:

  • id和spu_id这不用多说。
  • title:商品标题。
  • images:商品图片,一个商品会有多个图片。
  • indexs:这个字段是能够快速定位商品的具体属性,具体在上图中有说明。

此外还有一个商品的库存属性,因为库存是天天变化的,所以又独立了一张商品库存表。

二、SPU分页查询商品

这个和第146天实现的品牌查询是一样的,也是分页查询,当初我们是从前端页面到后台代码完整地写了一遍。

1请求相关

在商品管理的商品列表选项栏中,点击进入会看到一个分页页面。

①请求路径/方式

spu/page为真实路径,请求方式为get请求。

②请求参数

  • key:这个就是搜索框中输入的数据。
  • saleable:翻译是可供出售的,也就是用这个参数来控制商品的上下架。
  • page:当前页码数。
  • rows:每页的行数。

③返回值:返回值即为分页数据。

2Java实体类编写

关于Spu昨天因为时间紧迫讲的比较着急,今天再次做一个详细地介绍。

Spu实体类对应spu表。

Spu是商品的共用属性,既然如此,那么商品品牌、商品分类,以及商品购买页面的标题都是一样的。

因为关于商品描述这个字段内容非常的长,所以将SPU表做了一个拆分。

将一些描述性字段单独又放在了一个数据表中,也就是spu_detail表。

关于generic_spec和special_spec这两个属性,用来保存规格参数信息的值,这里为了方便查询,都是使用json格式。

实体类编写完成,开始代码编写。

三、Java三层代码及测试

Controller层和Mapper层

两个实体类对应两种查询,所以Mapper层中对应两个接口,这里使用通用mapper即可。

无论是查询Spu还是SpuDetail本质上都是对商品的查询,Controller层和Service层都用Goods来表示,当然今天只涉及到Spu查询。

①@GetMapping("page")

接受前端发送过来的get请求。

②四个请求参数

其中要注意的是:

  • key和saleable这两个属性可有可无,所以用required=false来说明。
  • page默认值为1,rows默认值为5,也就是默认查询第一页数据,数据展示5行。

③分页数据返回值

这个当初在通用微服务lxa-common中就说明过,编写了一个分页通用类,但凡是涉及到分页的都可以使用这个类。

也就是PageResult<Spu>,其中泛型根据不同的业务需求来指定,这里就是Spu。

Service层

①开启分页助手

只要是和分页相关的查询,第一步就是开启分页助手。

②条件过滤

根据key模糊匹配对应的字段,Spu中对应的也就是标题title这个字段了。

根据saleable字段确定我们是要查询上架的商品呢,还是下架的商品。

注意这里有一个容易忽略的地方

valid字段是用来表示数据是否删除了的。

  • false表示这行数据是无效数据
  • true表示这行数据是有效数据

我们自然是只需要有效数据。

③查询数据

调用spuMapper来查询数据,如果查询结果为空,抛出自定义异常。

④返回值

分页数据封装,分页助手说白了就是查询了分页相关的一些数据,通过PageInfo可以提供。

我们从数据库中只查询了商品相关的数据,至于一共有多少条呀,通过分页助手就能搞定。

代码编写完毕做一个测试:

我们再次点击商品管理中的商品列表,会发现其从数据库中查询到了对应的数据。

但是有一个问题是商品分类和品牌数据还没有查出来,因为Spu只存了它们对应的id并没有存其对应的值,后续再将其逐步完善。

最后

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

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

本文分享自微信公众号 - 刘小爱(liuxiaoai946),作者:刘小爱

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-09-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【微服务】163:搭建搜索微服务

    首先简单地说明一下这几天需要完成的任务:现在随便去电商网站搜索大致都会出现如下页面:

    刘小爱
  • 【微服务】150:什么是SKU和SPU?

    具体数据需要我们从数据库中查询,因为我这边业务还未完成,所以显示的数据为:“该分组下没有参数”。

    刘小爱
  • 【微服务】169:搜索页面的请求与响应

    使用axios发送请求,当然为了后续方便,axios被封装到了自定义的common组件中。

    刘小爱
  • 误删除 文件 磁盘 格式化 勒索 加密 数据 恢复 指南

    R-Studio这个软件是Windows电脑和Windows服务器上都能运行的、可以恢复Windows文件系统和Linux文件系统的绝好软件,我试过了5种以上的...

    我爱你的一诺
  • Python 的 Descriptor 在 Django 中的使用

    这篇通过Django源码中的cached_property来看下Python中一个很重要的概念——Descriptor(描述器)的使用。想必通过实际代码来看能让...

    the5fire
  • 3.6 自定义View (3.6.2)

    创建复合控件可以很好地创建出具有重用功能的控件集合。这种方式通常需要继承一个合适的ViewGroup,再给它添加指定功能的控件,从而组合成新的复合控件。通过这种...

    凌川江雪
  • Shiro 集成 Spring 之会话管理

    Shiro 提供了完整的会话管理功能,可以在不依赖底层容器,不仅可以在 WEB 环境下使用 Session,还可以在 JavaSE 环境下使用,且提供了会话管理...

    一份执着✘
  • Bytom信息上链教程

    Gitee地址:https://gitee.com/BytomBlockchain/bytom

    比原链Bytom
  • Bytom信息上链教程

    Gitee地址:https://gitee.com/BytomBlockchain/bytom

    比原链Bytom
  • 关于HDFS-KMS集群化部署教程,你以前看的都错了!

    吕信,京东商城基础架构部资深架构师,拥有多年数据产品研发及架构经验。在京东及国内主导过多种数据产品的开发及社区建设,积极活跃于数据产品领域,对数据库及大数据领域...

    京东技术

扫码关注云+社区

领取腾讯云代金券