开发者学堂课程【全面讲解开源数据库中间件 MyCat 使用及原理(四):MyCat - 商品管理 - 根据 ID 查询 SKU 信息】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/758/detail/13316
MyCat - 商品管理 - 根据 ID 查询 SKU 信息
前言:
条件分页查询接口开发好之后,重启 Console 微服务,对已开发的接口进行测试。
这里用到的是 post 请求,当进行全端的请求时也要以 post 形式进行,要想发起post 请求则需要借助其他工具或者自己写一个表单进行提交。
例:利用接口测试工具 postman 进行
地址是"/search ((page]/{size)”
之后在 postman 工具中在 Get 接口后进行请求http://localhost:9001/spu/search/1/10,
之后把 get 请求更改为 post 请求,
注意:这里还需传递对应的信息:searchMap 即查询条件。
假如在 Body 中传递 JOSN 格式的空数据。如图:
若为空数据,即代表没有选择任何的查询条件,但查询时仍然能查询到商品。
如图:
查询结果的总条数为 7547 条, 10 条记录。
若把 10 换为 1 再查询,如图:
http:/localhost:9001/spu/search/1/1
查询结果的总条数依旧是7547条,但且只有一条记录。
测试条件查询情况
在 JSON 中编制代码 name,name 是模糊匹配,根据名称查询,假如名称为“全网通”。
查询后的总记录树数为 334 条,所展示出的记录都含有“全网通”名称。
若用副标题进行查询,则在原有的基础上再编制代码 caption。
之后找到商品列表中的副标题,若副标题为“智慧摄影”(注意:查询时必须满足含有“全网通”和“智慧摄影”的商品,否则查询无效)
之后进行查询。
查询结果为 1 条。这就说明,此接口测试通过。
通过之后则需要开发最后一个接口:SKU。
Sku 和 spu 的区别:
Spu 是标准产品单元,一个 spu 包含若干个 sku
步骤1、将 spu 切换为 sku
操作如下:
V_parent V_ service_goods main java cn.itcast.goods
mapper.
步骤2、建立 SkuMapper 接口
鼠标右击 mapper,左击选项 NEW,左击选项 Java Class,命名为 SkuMapper。
步骤3、声明方法
在 skumapper 接口中生成 public 方法并编制代码 publio TbSku findById(String skuid)。
并在上方编制注解“根据 ID 查询 sku 信息”。
*根据 ID 查询 SKU 信息
*@param skuid
*@return
*/
public TbSku findBytd(String skuid);
步骤4、编制映射配置文件
复制 cn.itcast.goods.mapper 并重新命名为 Skumapper。如图:
确认之后,将代码第三行的 spumapper 改为 skumapper。
并将第三行以下的 spumapper 的代码删掉。
如图:
并声明 select 语句,编制代码
<select id-"findById"parameterType="java.lang.String"resultMap-""></select>。
由于实体类 tbsku 和数据库 createTime 的字段并非完全对应,所以仍要声明一个skumap
<select id-"findById"parameterType-"java.lang.String"resul tMap="skuMap">
并编写语句:select * from tb_sku where id=#{skuid}。
因为上一段编码中用到了skuMap,所以需要在上方声明一个skuMap。
<resultMap id="skuMap"type="cn.itcast.model.TbSku">
并摞列类中的属性和表中的对应关系。
操作如下:
直接找到笔记,在笔记当中的配置直接拷贝到代码中即可。如图:
步骤5、编写 service 接口
在 service 中新建立一个 Javaclass 接口,用 Interface,并命名为 skuservice。如图:
编制代码public TbSku findById(String id)。
其作用为根据 ID 查询 sku 信息。
/**
*根据 ID 查询 SKU 信息
*@param id
*@return
*/
public Tbsku findById(String id);
接着声明一个 skuservice 的实现类 SkuServicelmpl。如图:
实现 skuservice 并加上注解 service。
public class skuserviceImpl implements Skuservice{
@override
public Tbsku findById(String id){
return null;
编制代码 private SkuMapper skuMapper 并传递 Autowired。
@Autowired
private SkuMapper skuMapper;
@override
public TbSku findById(String id){
return null;
将代码 return 后边的 null 改为 skuMapper.findbyId(id)。
步骤6、编写 controller 层逻辑代码
在 controller 新建接口 javaclass 命名为 skucontroller。
package cn.itcast.goods.controller;
public class skuController{
新建声明 Restcontroller 和 RequestMapping("/sku")
public class skucontroller{
注入代码 skuservice skuservice Autowired 进行注入。
并声明方法 public 和返回值 result 上方声明 GetMapping("/{id}")|。
@GetMapping("/{id}"].
public Result findById(String id){
此处 ID 是用 URL 形式传递所以需要在方法的前面加上注解PathVariable(“id”)。
public Result findById (@pathVariable("id")String id){
通过 skuservice.findById(id) 就能拿到当前的 sku。如图:
编写代码 return new Result(flag:true,Statuscode.oK,message:“查询成功",sku)。
步骤7、启动当前的 Console 并测试接口
随便寻找一个 sku 的 ID 例如:100000006163。
将之前的链接更改为:
http://localhost:9001/sku/100000006163。
查询成功后,说明 sku 信息已经拿到了,即测试成功。