MyCat - 商品管理 - 根据 ID 查询 SPU | 学习笔记

简介: 快速学习 MyCat - 商品管理 - 根据 ID 查询 SPU

开发者学堂课程【全面讲解开源数据库中间件 MyCat 使用及原理(四):MyCat - 商品管理 - 根据 ID 查询 SPU 】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/758/detail/13314


MyCat - 商品管理 - 根据 ID 查询 SPU

内容介绍

一、前期准备

二、开发功能

三、service 层的逻辑处理

四、 测试

 

一、前期准备

1.编写测试类:

搭建好接触的微服务后,进行测试,在进行相关的功能开发,首先我们在我们的  controller 建立一个 DemoController 类,这个测试类需要的代码如下:

package cn.itcast.goods.controller;

Import orgspringframework.webbind.annotation.RequestMapping;

import org.springframework.webbind.annotation.RestController;

@RestController  //作用一个注解

@RequestMapping ("/demo")  //这里的注解可以不写

public class DemoController{

@RequestMapping("/show")  //再做一个注解

@RequestMapping

public string show(){  //申明一个方法 show

return "OK";

}

}

2.启动项目服务:

编写好测试类后,启动我们的  goods 微服务,启动微服务前,先启动 Eureka

启动 Eureka 后,再启动 goods 微服务,在启动测试 Controller 类,看能不能正常访问。

工程启动后, Eureka 中看端口号为 8161,接下来在浏览器中上方网址栏写 Localthost:8161, 会出现如下界面;证明启动成功。(先不要取消页面)

image.png

3. 检查搭建是否成功:

启动刚才搭建的 goods 微服务,之后访问 Controller ,启动成功后观察端口号为9001,然后在刚才打开的浏览器页面,刷新,观察到 goods 的微服务已经注册到 Eureka。

然后在浏览器访问 Locallhost:9001/demo/show ,会观察到 OK 返回回来。如下图所示:

image.png

这个结果代表基础的微服务工程搭建已经没有问题。

 

二、开发功能

1. 申明接口 SpuMapper :

搭建成功后,开发具体的功能,首先关闭两个微服务,首先开发根据 ID 查询商品 spu 信息的功能。

首先在 mapper 包里申明一个接口 SpuMapper ,然后选择 kind 为 interface。

代码如下:

package cn.itcast.goods.mapper;

import cn.itcast.model.Tbspu;

public interface SpuMapper {

public Tbspu findbyid();  //

步骤一:

首先定义一个方法 findbyid(),这里 Tbspu 这个实体类返回是 Tbspu ;  

}

对于步骤一这个它的 Spu 是什么类型,需要找到数据库,选择保存的 localhost 连接,测试连接没有问题后,找到 v__shop 中的 tb _spu 的信息中的 ID 类型,如下图所示:

image.png

image.png

步骤二:在数据库中找到 ID 类型后,在 findbyid() 括号里写上 String spuid ;如:

public Tbspu findbyid(String spuid); 然后定义对应的映射文件。

2.mapper 接口基本定义:

在 resources下面申明一个包 cn.itcast.goods.mapper,然后再申明一个配置文件SpuMapper.xml, 配置文件的头信息是固定的,有模板,模板为:

<?xm1 version="1.0" encoding-"UTF-8" ?>

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd

<mapper namespace="cn.iteast.goods.mapper.SpuMapper" >

</mapper>

同时申明一个ID:<select id "findById" parameterType "java.lang.string"></select> //这里的 ID,名字 findById 跟接口 SpuMapper 中的方法名一样;类型为 java.lang.string ,返回值为 TbSpu.

TbSpu.的属性实际上是 categoryid. 采用的是驼峰命名,在数据中使用的是下划线,表示表结构中的字段与类当中的属性不能完全对应。针对这个问题,我们可以在申明一个 resultMap. Id 为 spuMap,类型为 cn.itcast.model.TbSpu 。代码如下:

<resultMap id "spuMap" type-"cn.iteast.model.Tbspu">//申明一个 resultMap.

Id 为 spuMap,类型为  cn.itcast.model.TbSpu

</resuitMap>

<select id-"findById"

parameterType="java.lang.String" resultMap="spuMap">//申明一个 resultMap. Id

</select>

在这个 resultMap 里面配置数据库字段与类中属性的对应关系,代码如下

<id column="id" jdbcType="VARCHAR" property="id" />

<result column="gn" jdbcType-"VARCHAR" property="sn" />

<result column-"name" jdbatype-"VARCHAR" property-"name" />

<result column="caption" jdbcType="VARCHAR" property="caption" />

<result column="brand id" jdbcType="INTEGER" property="brandid" />

<result column "category1 id" jdbcType "INTEGER" property "category1Id" />

<resultcolumn="category2id"jdbcType="INTEGER" property="category2Id" />

<resultcolumn"category3id"jdbcType"INTEGER"property "category3Id" />

<result column "template id" jdbcType "INTEGER" property "templateid" />

<resultcolumn="freightid" jdbcType="INTEGER" property="freightid" />

<result column-"image" jdbeType="VARCHAR" property="image" />

<result column-"images" jdbcType "VARCHAR" property-"images" />

<result column="sale service" jdbcType="VARCHAR" property-"saleService" />

<resultcolumn="specitems" jdbcType="VARCHAR" property="specitems" />

<result column="para items" jdbeType "VARCHAR" property "paraitems" />

<result column="sale num" jdbeType="INTEGER" property="saleNum" />

<result column "comment num" jdbcType "INTEGER" property-"commentNum" />

<result column "is marketable" jdbcType-"CHAR" property "isMarketable" />

<resultcolumn="isenablespec"jdbcType="CHAR" property="isEnableSpec" />

<result column-"is delete" jdbcType="CHAR" property="isDelete" />

<result column-"status" jdbcType-"CHAR" property-"status" />

然后编写 select 语句:

select * from tb spu where id = #{spuid},到此为止,mapper 接口基本定义结束

 

三、service 层的逻辑处理

1. 建立一个spuService:

之后,开发 service 层的逻辑处理,首先,在 service 中建立一个 spuService, kind 为 interface 。然后在里面申明一个接口方法:public Tbspu findbyid(String id) 。然后再去定义一个包 impl ,然后在定义这个接口的实现类 spuServiceImpl  ,实现其中的一个方法 findbyid 。

Findbyid 这个方法作用就是根据 ID 查询 Spu 信息。对于这个接口里面的方法的逻辑来说,需要调用 SpuMapper 中的 findbyid 方法,注入一个 private SpuMapper SpuMapper  ,通过 @Autowired 进行注入。并且在上面进行一个注解 @service 。然后传递 ID 即可。代码如下:

import cn.itcast.model.Tbspu;

import com.netflixdiscoveryconverters.Auto;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframeworkstereotype.Service;

@Service //注解 @service

public class spuserviceImpl implements Spuservice {

@Autowired //通过@Autowired 进行注入

private spuMapper spuMapper;

@Override

public tbspu findById(String id) {  //注入一个 private SpuMapper SpuMapper ,

return spuMapper.findById(id);

}

}

如果报错,将检查级别调低即可。

2. 申明一个 SpuController:

在 Controller 里申明一个 SpuController 。在里面申请一个注解 @RestController,然后把实体类转为 json 格式,然后再去做一个注解 @RequestMapper(“/spu”), 然后申明一个方法,

注意:返回值,所有的结果都封装在 Resuit 当中, Resuit 当中给一个泛型 TbSpu ,然后申明一个方法 findbyid ,同时里面需要接收一个 ID ,接收这个 ID ,然后上面使用一个注解 @GetMapping  ,因为当前是查询,所以使用 Get 请求,所以限定请求方式为 Get 。

然后在注解的 @GetMapping 后面写入 id ,这个 id 通过 url 传递过来。然后在方法方法 findbyid 中写个注解 @PathVariable 来接收,来指定 id 。

接下来在这里面调用 Spuservice 中的 findbyid方法,需要注入 private spuservice spuservice; ,然后在这里面通过通过 @Autowired 进行注入,接下来调用 Spuservice 中的 findbyid 方法,然后就可以查询并返回一个 Spu 。

Spu 返回后,就 return new一个 Result ,在里面需要传递泛型 TbSpu ,然后在这里面我们需要传递的参数:

第一个:请求是否成功,

第二个:StatusCode.OK ,成功就是 OK 。

第三个:查询成功,

第四个:Date 数据 tbspu 。需求开发完毕。

3. 代码如下:

import org.springframework.webbind.annotation.RestController;

@RestController //申请一个注解 @RestController

@RequestMapping("/spu")

public class spucontroller {

@Autowired

private spuservice spuservice;

@GetMapping("/(id}")  

//上面使用一个注解 @GetMapping  ,在注解的 @GetMapping 后面写入 id ,这个 id 通过 url 传递过来

public Result<Tbspu> findById(@PathVariable("id") String id){ //申明一个方法 findbyid ,同时里面需要接收一个 ID,接收这个 ID;    

//在方法方法 findbyid 中写个注解 @PathVariable 来接收,来指定 id

Tbspu tbspu=spuService.findById(id);

returnnew Result<TbSpu>( flag:true,StatusCode.oK,message:"查询成功"tbspu); //return new 一个 Result ,在里面需要传递泛型 TbSpu ,然后在这里面我们需要传递的参数:

第一个:请求是否成功,

第二个:StatusCode.OK ,成功就是 OK 。

第三个:查询成功,

第四个:Date 数据 tbspu 。

}

}


四、测试

接下来进行一个简单的测试,先启动 Eureka ,启动后,启动微服务,测试定义和需求能不能正常运行,Eureka 启动好,清掉日志。看 goods 微服务能不能正常启动,goods 微服务启动成功后,在浏览器访问  Locallhost:9001/spu/id 在数据库中找一个  spu ,然后传递;执行;

显示结果如下图所示:

image.png

这个结果代表我们的第一个根据 ID 查询 spu 成功。

相关文章
|
4月前
|
SQL 算法 Serverless
B端算法实践问题之使用concat_id算子获取用户最近点击的50个商品ID如何解决
B端算法实践问题之使用concat_id算子获取用户最近点击的50个商品ID如何解决
28 1
|
JSON 数据格式
谷粒商城--SPU和SKU(分组与属性关联、发布商品、仓库服务)-1
谷粒商城--SPU和SKU(分组与属性关联、发布商品、仓库服务)
54 0
|
测试技术 API 微服务
谷粒商城--SPU和SKU(分组与属性关联、发布商品、仓库服务)-3
谷粒商城--SPU和SKU(分组与属性关联、发布商品、仓库服务)
70 0
|
JSON 前端开发 Java
谷粒商城--SPU和SKU(分组与属性关联、发布商品、仓库服务)-2
谷粒商城--SPU和SKU(分组与属性关联、发布商品、仓库服务)
96 0
|
XML JSON Java
Java实现根据商品ID请求震坤行商品详情数据方法
Java实现根据商品ID请求震坤行商品详情数据方法
|
XML JSON 缓存
Java实现商品CID ID获取淘宝商品分类数据方法
Java实现商品CID ID获取淘宝商品分类数据方法
|
XML JSON 缓存
Java实现商品ID获取京东商品详情Desc商品描述数据方法
Java实现商品ID获取京东商品详情Desc商品描述数据方法
|
XML JSON 缓存
Java实现根据CID ID获取1688商品分类数据API方法
Java实现根据CID ID获取1688商品分类数据API方法
|
JSON Java 中间件
MyCat - 商品管理 - 根据 ID 查询 SKU 信息 | 学习笔记
快速学习 MyCat - 商品管理 - 根据 ID 查询 SKU 信息
MyCat - 商品管理 - 根据 ID 查询 SKU 信息 | 学习笔记
|
SQL Java 中间件
MyCat - 商品管理 - 根据条件分页查询 SPU 列表 | 学习笔记
快速学习 MyCat - 商品管理 - 根据条件分页查询 SPU 列表
MyCat - 商品管理 - 根据条件分页查询 SPU 列表 | 学习笔记