up:: SpringBoot电商项目商品模块更新商品接口

说明:

(1) 本篇博客的内容:开发【删除商品】接口;

(2)声明: 在实际开项目中,我们不太推荐使用【删除商品】;这是因为,为了保留数据库的信息的沉淀,我们尽量不会去删除这些数据;其实,在业务中,对商品进行下架,就是一种变相的软删除,而且其可以保留历史信息;

(3) 本篇博客需要注意的点:

● 【删除商品】时的时候,要先判断一下这条数据是否存在,如果存在再去调用删除方法;


一:【删除商品】接口简介;

1.【删除商品】接口文档;

说明:

(1) 至于为什么这个删除操作,请求方式是POST而不是DELETE;因为这是一个SpringMVC的简单请求;(这在Restful中,介绍过)

(2) 这个接口是需要管理员用户登录的,而我们在AdminFilterConfig中,也对其进行了统一的处理;

2.删除商品,在界面上的表现;


二:正式开发;

1.在ProductAdminController类中,创建删除商品的方法:deleteProduct()方法;

 
         /**
          * 后台删除商品
          * @param id
          * @return
          */
         @ApiOperation("删除商品")
         @PostMapping("/admin/product/delete")
         @ResponseBody
         public ApiRestResponse deleteProduct(@RequestParam("id") Integer id)
				 {
             productService.delete(id);
             return ApiRestResponse.success();
         }

说明:

(1) 请求方式,url要符合接口文档;

(2) 因为前端的参数放在了url中,所以使用@RequestParam注解来帮助接收参数;

(3) 然后调用service层的delete方法,去删除商品;这在下一部分会介绍;

2.在ProductServiceImpl实现类中,编写删除商品的方法delete();然后在ProductService接口中,反向生成方法的声明;

(1)在ProductServiceImpl实现类中,编写删除商品的方法delete();

 
         /**
          * 删除商品
          * @param id
          */
         @Override
         public void delete(Integer id) {
             //先查查,看表里是否有这条数据
             Product productOld = productMapper.selectByPrimaryKey(id);
             //如果查不到数据,就抛出删除失败异常;(很容理解,都查不到这条数据,当然无法删除了)
             if (productOld == null) {
                 throw new ImoocMallException(ImoocMallExceptionEnum.DELETE_ERROR);
             }
             //如果一切OK,就调用【mybatis-generator帮我们生成的】删除方法去删除;
             int count = productMapper.deleteByPrimaryKey(id);
             //如果没有删除成功,就抛出删除失败异常;
             if (count == 0) {
                 throw new  ImoocMallException(ImoocMallExceptionEnum.DELETE_ERROR);
             }
         }

说明:

(1) 删除前,先查看数据库中是否有这条数据;

(2) 如果一切OK,就调用【mybatis-generator】插件帮我们生成的deleteByPrimaryKey()方法去删除;


(2)然后在ProductService接口中,反向生成方法的声明;


三:测试【删除商品】接口;

先调用【管理员登录】接口,然后调用【更新商品】接口;