根据分类id获得商品的品牌,并获得该品牌下的所有商品
2022/1/27 23:08:18
本文主要是介绍根据分类id获得商品的品牌,并获得该品牌下的所有商品,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.获得该类下商品的所有品牌
数据库及流程分析
要获得品牌就要有product_id ,而product_id 是product表中的数据
sql语句如下:
SELECT disticnt brand FROM product_params WHERE product_id IN(SELECT product_id FROM product)
distinct是为了去重,显然不同商品一个牌子也是存在的
剩下的mapper,service,controller层过于简单,不做赘述
2.获得该品牌下的所有商品
2.1 获得商品的id
sql语句实现(以分类id=13举例)
SELECT p.product_id, p.product_name,p.category_id,p.root_category_id,p.sold_num,p.product_status,p.content,
pa.param_id,pa.product_id,pa.product_place,pa.foot_period,pa.brand
FROM product p INNER JOIN product_params pa ON pa.product_id = p.product_id WHERE p.category_id = 13
AND pa.brand = "酒鬼"
2.2获得商品id下的所有套餐中sellPrice最低的套餐
SELECT * FROM product_sku WHERE product_id =19 ORDER BY sell_price LIMIT 0,1
3.后端实现
productVo 新增了品牌这一项
productMapper
//根据三级分类id分页商品的brand 和category_id获得商品id, //根据商品id获得商品的所有套餐,选择套餐中sellprice最低的那个 还需要当前页的起始索引,当前页的查询记录数 public List<ProductVo> selectProductInfoByBrandsAndCIds(@Param("cid")int cid,@Param("brand") String brand,@Param("start") int start, @Param("pagesize") int pagesize);
productMapper.xml 依然是根据categoryid和品牌得到productId,然后用productId进行子连接
<id column="product_id" jdbcType="VARCHAR" property="productId" /> <result column="product_name" jdbcType="VARCHAR" property="productName" /> <result column="category_id" jdbcType="INTEGER" property="categoryId" /> <result column="root_category_id" jdbcType="INTEGER" property="rootCategoryId" /> <result column="sold_num" jdbcType="INTEGER" property="soldNum" /> <result column="product_status" jdbcType="INTEGER" property="productStatus" /> <result column="create_time" jdbcType="TIMESTAMP" property="createTime" /> <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" /> <result column="content" jdbcType="LONGVARCHAR" property="content" /> <collection property="paramsList" ofType="com.qfedu.fmmall.entity.ProductParams" > <id column="param_id" jdbcType="VARCHAR" property="paramId" /> <result column="product_id" jdbcType="VARCHAR" property="productId" /> <result column="product_place" jdbcType="VARCHAR" property="productPlace" /> <result column="foot_period" jdbcType="VARCHAR" property="footPeriod" /> <result column="brand" jdbcType="VARCHAR" property="brand" /> </collection> <!--根据商品id查询sellprice最低的套餐--> <collection property="skuList" select="com.qfedu.fmmall.dao.ProductSkuMapper.getLowerPriceByProductId" column="product_id"/> </resultMap> <select id="selectProductInfoByBrandsAndCIds" resultMap="ProductMap3"> SELECT p.product_id, p.product_name, p.category_id, p.root_category_id, p.sold_num, p.product_status, p.content, pa.param_id, pa.product_id,pa.product_place,pa.foot_period,pa.brand FROM product p INNER JOIN product_params pa ON pa.product_id=p.product_id WHERE p.category_id =#{cid} AND pa.brand=#{brand} limit #{start},#{pagesize} </select>
productService
//传参数还是当前的页码,每页最多由多少项数据 public ResultVo getProductInfoByCidAndBrands(int categoryid,String brand, int pageNum,int limit);
productServiceImpl
public ResultVo getProductInfoByCidAndBrands(int categoryid, String brand, int pageNum, int limit) { //1.获得当前页的起始索引 int start=(pageNum-1)*limit; List<ProductVo> productVos1 = productMapper. selectProductInfoByBrandsAndCIds(categoryid, brand, start, limit); //2.获得该条件下categoryAndProductId的总记录数 int count=productVos1.size(); //3.计算总页数 int pageCount1=0; if(count%limit==0) pageCount1=count/limit; else pageCount1=count/limit +1; //把数据放进pageHelper里 PageHelper<ProductVo> productVoPageHelper = new PageHelper<>(count, pageCount1, productVos1); return new ResultVo(ResStatus.OK,"success",productVoPageHelper); }
productController
@ApiOperation("根据商品的分类id和品牌来查询商品信息的接口") @GetMapping("/listByCidAndBrand/{cid}") //前端要传给后端4个参数,分类id,品牌, 哪一页的评论 该页有多少评论 @ApiImplicitParams({ @ApiImplicitParam(dataType = "int", name="pageNum",value="当前的页码数",required = true), @ApiImplicitParam(dataType = "int", name = "limit", value="每页最多显示多少条数据",required =true) }) public ResultVo getProductByCidSAndBrands(@PathVariable("cid") int cid,String brand,int pageNum,int limit){ ResultVo resultVo = productService.getProductInfoByCidAndBrands(cid, brand,pageNum, limit); return resultVo; }
4.前端实现
![](https://www.www.zyiz.net/i/l/?n=22&i=blog/1859559/202201/1859559-20220127223038990-1895270164.png)
这篇关于根据分类id获得商品的品牌,并获得该品牌下的所有商品的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南