今天是刘小爱自学Java的第151天。 感谢你的观看,谢谢你。 学习计划安排如下:
一、SKU数据表设计今天对于SKU并未涉及到代码上的操作,暂且只做初步了解,也是对昨天的学习补充。 对SPU和SKU做一个简单的回顾,比如某电商网站某品牌手机有几个版本:
SKU就是具体的某个商品,颜色内存都确定了,也就是订单中对商品的详细说明。 SPU就是它们共有的属性,比如名字都叫小米10,售后服务是同一个……等等。 SPU表有如下字段:
此外还有一个商品的库存属性,因为库存是天天变化的,所以又独立了一张商品库存表。 二、SPU分页查询商品这个和第146天实现的品牌查询是一样的,也是分页查询,当初我们是从前端页面到后台代码完整地写了一遍。 1请求相关 在商品管理的商品列表选项栏中,点击进入会看到一个分页页面。 ①请求路径/方式 spu/page为真实路径,请求方式为get请求。 ②请求参数
③返回值:返回值即为分页数据。 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请求。 ②四个请求参数 其中要注意的是:
③分页数据返回值 这个当初在通用微服务lxa-common中就说明过,编写了一个分页通用类,但凡是涉及到分页的都可以使用这个类。 也就是PageResult<Spu>,其中泛型根据不同的业务需求来指定,这里就是Spu。 Service层 ①开启分页助手 只要是和分页相关的查询,第一步就是开启分页助手。 ②条件过滤 根据key模糊匹配对应的字段,Spu中对应的也就是标题title这个字段了。 根据saleable字段确定我们是要查询上架的商品呢,还是下架的商品。 注意这里有一个容易忽略的地方: valid字段是用来表示数据是否删除了的。
我们自然是只需要有效数据。 ③查询数据 调用spuMapper来查询数据,如果查询结果为空,抛出自定义异常。 ④返回值 分页数据封装,分页助手说白了就是查询了分页相关的一些数据,通过PageInfo可以提供。 我们从数据库中只查询了商品相关的数据,至于一共有多少条呀,通过分页助手就能搞定。 代码编写完毕做一个测试: 我们再次点击商品管理中的商品列表,会发现其从数据库中查询到了对应的数据。 但是有一个问题是商品分类和品牌数据还没有查出来,因为Spu只存了它们对应的id并没有存其对应的值,后续再将其逐步完善。 最后行有不得反求诸己,我是@刘小爱 一个白天上班晚上学习的95后沪漂,不为其它,只为学会自律做好自己,也愿我的每日打卡能给你带来勇气,欢迎点赞关注和评论。 |
|