up:: SpringBoot电商项目商品模块后台的商品列表接口
说明:
(1) 本篇博客内容:开发【商品详情】接口;
(2)一个开发习惯: Service层的方法,其注释:最好不要带有太浓的具体业务指向,而应代用一般化的业务指向;比如:
PS:该项目,至此前面的Service中,很多注释自己写的都太带有有具体业务的色彩了;就不改了,以后注意;
一:【商品详情】接口介绍;
1.【商品详情】接口文档;
说明:
(1) 因为这个接口是前台的,所以是不需要管理员登录的;可以看到,我们在AdminFilterConfig中的配置,也不会拦截这个接口;
(2) 这个接口的返回值类型,要求是Product对象序列化为的JSON;
2.【商品详情】接口,在界面上的表现;
如果我们点击某个商品,可以查看该该商品的详情页;
二:正式开发;
1.创建ProductController类;创建查看商品详情的方法:detail()方法;
ProductController:
package com.imooc.mall.controller;
import com.imooc.mall.common.ApiRestResponse;
import com.imooc.mall.model.pojo.Product;
import com.imooc.mall.service.ProductService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* 描述:【商品模块】前台的Controller
*/
@Controller
public class ProductController {
@Autowired
ProductService productService;
/**
* 查看商品详情
* @param id
* @return
*/
@ApiOperation("商品详情")
@GetMapping("/product/detail")
@ResponseBody
public ApiRestResponse detail(@RequestParam("id") Integer id) {
Product product = productService.detail(id);
return ApiRestResponse.success(product);
}
}
说明:
(1) 因为【针对管理员的】和【针对普通用户的】,其存在很多的不同;所以,我们把其拆成了不同的Controller,这样做逻辑更加清晰;
(2) 方法说明;
(3) 这儿调用了我们在Service层编写的,根据id查商品的方法:detail()方法;这在下一部分介绍;
2.在ProductServiceImpl中编写查看商品详情的方法:detail()方法;并在ProductService接口中,反向生成方法的声明;
声明: 虽然,在Controller我们分别创建了ProductAdminController和ProductController来分别对应【针对管理员的】和【针对普通用户的】;但是,在Service层,我们就没要区分了;;;;;因为,【针对管理员的】和【针对普通用户的】的很多业务,其背后逻辑是差不多的;我们写在一个Service中,也方便方法等的复用;
一个开发习惯: Service层的方法,其注释:最好不要带有太浓的具体业务指向,而应代用一般化的业务指向;比如:
(1)在ProductServiceImpl中编写查看商品详情的方法:detail()方法;
/**
* 根据id,查询商品
* @param id
* @return
*/
@Override
public Product detail(Integer id) {
Product product = productMapper.selectByPrimaryKey(id);
return product;
}
说明:
(1) 这儿是直接调用【mybatis-generator】帮我们生成的,根据id查数据的方法:selectByPrimaryKey()方法;
(2)在ProductService接口中,反向生成方法的声明;
三:测试;
启动项目;