电商商城之购物车(待续)

一、购物车的存储形式-cookie

1、无须登陆、无须查库、保存在浏览器端

2、优点:性能好、访问快,没有和数据库交互

3、缺点1:换电脑购物车数据会丢失

4、缺点2:电脑被其他人登陆,隐私安全

二、购物车存储形式-session(不使用)

1、用户登陆后,购物车数据放入用户会话

2、优点:初期性能较好,访问快

3、缺点1:session基于内存,用户量庞大影响服务器性能

4、缺点2:只能存在与当前会话,不适用集群与分布式系统

三、购物车存储形式-数据库(不使用)

1、用户登陆后,购物车数据存入数据库

2、优点:数据持久化,可在任何地点任何时间访问

3、缺点:频繁读写数据库,造成数据库压力

四、购物车存储形式-redis

1、用户登陆后,购物车数据存入redis缓存

2、优点1:数据持久化,可在任何地点任何时间访问

3、优点2:频繁读写是基于缓存,不会造成数据库压力

4、优点3:适用于集群与分布式系统,可扩展性强

 

redis可以把数据持久化到磁盘里面去的

 

第一步:mapper接口层

public List<ShopCartVO> queryItemBySpecIds(@Param("paramsList") List specIdsList);

第二步:mapper层的sql语句

  <select id="queryItemBySpecIds" parameterType="List" resultType="com.ljl.pojo.vo.ShopCartVO">
    select
      t_items.id as itemId,
      t_items.item_name as itemName,
      t_items_img.url as itemImgUrl,
      t_items_spec.id as specId,
      t_items_spec.'name' as specName,
      t_items_spec.price_discount as priceDiscount,
      t_items_spec.price_normal as priceNormal
   from
      items_spec t_items_spec
    left join
      items t_items
    on t_items.id=t_items_spec.item_id
    left join
      items_img t_items_img
    on
      t_items_img.item_id =t_items.id
    where
      t_items_img.is_main=1
    and
      t_items_spec.id in
      <foreach collection="paramsList" index="index" item="specId" open="(" separator="," close=")">
        #{specId}
      </foreach>
  </select>

第三步:service层

  /**
     * 根据规格ids查询最新的购物车中商品数据(用于刷新渲染购物车中的商品数据)
     * @param specIds
     * @return
     */
    public List<ShopCartVO> queryItemBySpecIds(String specIds);

第四步:service实现层

 @Transactional(propagation = Propagation.SUPPORTS)
    @Override
    public List<ShopCartVO> queryItemBySpecIds(String specIds) {
        String[] ids=specIds.split(",");
        List<String> specIdsList=new ArrayList<>();
        //将ids里面的元数据添加到list里面去
        Collections.addAll(specIdsList,ids);
        return itemsMapperCustom.queryItemBySpecIds(specIdsList);
    }

第五步:controller层

    //用于用户长时间未登陆网站,刷新购物车中的数据(主要是商品价格)
    @ApiOperation(value = "根据商品规格ids查找最新的商品数据",notes="根据商品规格ids查找最新的商品数据",httpMethod="GET")
    @GetMapping("/refresh")
    public JSONResult refresh(
            @ApiParam(name="itemSpecIds",value="拼接的规格ids",required=true,example="1001,1003,1005")
            @RequestParam String itemSpecIds){
        if(StringUtils.isBlank(itemSpecIds)){
            return JSONResult.ok();
        }
        List<ShopCartVO> list = itemService.queryItemBySpecIds(itemSpecIds);
        return JSONResult.ok(list);
    }

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值