一、购物车记录列表接口:
根据一个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>
- elect>
2.tkMapper条件查询
critera.andIn("cartId",ids);
Service接口:
- @Override
- public ResultVO listShoppingCartsByCids(List
cids) { - Example example = new Example(ShoppingCart.class);
- Example.Criteria criteria = example.createCriteria();
- criteria.andIn("cartId",cids);
-
- List
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>
- elect>
3.单元测试
- @Test
- public void testShopCart(){
- //List
categoryVOS = categoryMapper.selectFirstLevelCategories(); - List
cids = new ArrayList<>(); - cids.add(1);
- cids.add(9);
- cids.add(15);
- List
list = shoppingCartMapper.selectShopcartByCids(cids); - System.out.println(list);
-
- }
三、接口实现
ShoppingCartMapper:
public List 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 shoppingCarts = shoppingCartMapper.selectByExample(example); String[] arr = cids.split(","); List cartIds = new ArrayList<>(); for (int i = 0; i){ cartIds.add(Integer.parseInt(arr[i])); } List 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;
- }
测试: