千峰商城-springboot项目搭建-78-购物车结算-查询购物车记录接口

一、购物车记录列表接口:
根据一个ID的集合,查询购物车记录,实现方式有两种:
1.动态SQL
<select id="searchShoppingCartById" resultMap="ShopCartMap">
    SELECT * FROM shopping_cart WHERE cart_id IN 
    <foreach collection="list" item="cid" separator="," open="(" close=")">
        #{cid}
    </foreach>
</select>

 2.tkMapper条件查询

critera.andIn("cartId",ids);

Service接口:

    @Override
    public ResultVO listShoppingCartsByCids(List<Integer> cids) {
        Example example = new Example(ShoppingCart.class);
        Example.Criteria criteria = example.createCriteria();
        criteria.andIn("cartId",cids);

        List<ShoppingCart> shoppingCarts = shoppingCartMapper.selectByExample(example);
        return null;
    }

这样查询出来的购物车中没有商品图片、商品名称,单价等信息,不满足需求。

二、数据库实现

1.ShoppingCartMapper:

    public List<ShoppingCartVO> selectShopcartByCids(List<Integer> cids);

2.映射配置(动态sql):

 <select id="selectShopcartByCids" resultMap="ShoppingCartVOMap">
        SELECT c.cart_id,
        c.product_id,
        c.sku_id,
        c.user_id,
        c.cart_num,
        c.cart_time,
        c.product_price,
        c.sku_props,
        p.product_name,
        i.url,
        s.original_price,
        s.sell_price,
        s.sku_name
        FROM shopping_cart c
        INNER JOIN product p
        INNER JOIN product_img i
        INNER JOIN product_sku s
        ON c.product_id=p.product_id
        AND i.item_id=p.product_id
        AND c.sku_id=s.sku_id
        WHERE i.is_main=1 and c.cart_id IN
        <foreach collection="cids" item="cid" separator="," open="(" close=")">
            #{cid}
        </foreach>
    </select>

 3.单元测试

    @Test
    public void testShopCart(){
        //List<CategoryVO> categoryVOS = categoryMapper.selectFirstLevelCategories();
        List<Integer> cids = new ArrayList<>();
        cids.add(1);
        cids.add(9);
        cids.add(15);
        List<ShoppingCartVO> list = shoppingCartMapper.selectShopcartByCids(cids);
        System.out.println(list);

    }

 三、接口实现

ShoppingCartMapper:
 public List<ShoppingCartVO> selectShopcartByCids(String cids);

 listShoppingCartsByCids:


    @Override
public ResultVO listShoppingCartsByCids(String cids) {
//使用tkMapper查询出来的购物车中没有商品图片、商品名称,单价等信息,不满足需求。
// Example example = new Example(ShoppingCart.class);
// Example.Criteria criteria = example.createCriteria();
// criteria.andIn("cartId",cids);
//
// List<ShoppingCart> shoppingCarts = shoppingCartMapper.selectByExample(example);

String[] arr = cids.split(",");
List<Integer> cartIds = new ArrayList<>();
for (int i = 0; i<arr.length;i++){
cartIds.add(Integer.parseInt(arr[i]));
}


List<ShoppingCartVO> list = shoppingCartMapper.selectShopcartByCids(cartIds);
ResultVO resultVO = new ResultVO(ResStatus.OK, "success", list);

return resultVO;
}
 

 四、控制层实现:

ShopcartController:
    @GetMapping("/listbycids")
    @ApiImplicitParam(dataType = "String",name = "cids",value = "选择的购物车记录的id",required = true)
    public ResultVO listByCids(String cids, @RequestHeader("token")String token){
        ResultVO resultVO = shoppingCartService.listShoppingCartsByCids(cids);
        return resultVO;
    }

 测试:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值