前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【微服务】151:商品的分页查询

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

作者头像
刘小爱
发布2020-09-14 14:47:09
1.4K0
发布2020-09-14 14:47:09
举报
文章被收录于专栏:零基础自学Java

学习计划安排如下:

  • 昨天学习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后沪漂,不为其它,只为学会自律做好自己,也愿我的每日打卡能给你带来勇气,欢迎点赞关注和评论。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 刘小爱 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、SKU数据表设计
  • 二、SPU分页查询商品
  • 三、Java三层代码及测试
  • 最后
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档