查询购物车记录接口,需要购物车列表(购物车信息)商品表(商品的信息比如商品的名称)套餐表(套餐的名称,套餐的价格,套餐的具体内容)商品图片表(商品图片)
{
"code": 10000,
"msg": "success",
"data": [
{
"cartId": 76,
"productId": "1",
"skuId": "3",
"userId": "7",
"cartNum": "1",
"cartTime": null,
"productPrice": 8,
"skuProps": "口味:草莓;",
"productName": "奥利奥小饼干",
"url": "ala_1.png",
"originalPrice": 10,
"sellPrice": 8,
"skuName": "奥奥奥分享装",
"stock": 147
}
]
}
而原本的购物车实体类是没有商品信息这些东西的,只有商品的id,所以需要新建购物车实体类
实体类

dao->mapper
这里做了一个索引优化
ALTER TABLE shopping_cart ADD INDEX c_all(cart_id,product_id,sku_id,user_id,cart_num,cart_time,product_price,sku_props)
ALTER TABLE product_img ADD INDEX itemidx (item_id)

这里是要查询购物车列表的全部字段,所以全部字段都需要建立索引,productId是商品表的主键,主键自动建立唯一索引,skuId是套餐表的主键,但是item_id并不是图片表的主键,所以要建立索引
选择购物车列表数据提交订单时,可以用同一个索引
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,s.original_price,s.sell_price,s.sku_name,
p.product_name,i.url,s.stock
FROM shopping_cart c
INNER JOIN product p
INNER JOIN product_img i
INNER JOIN product_sku s
ON s.sku_id=c.sku_id
AND p.product_id=c.product_id
AND i.item_id=c.product_id
WHERE i.is_main=1 AND c.cart_id IN(76,77)
动态sql的编写
<select id="selectShoppingCartByICartIds" resultMap="ShoppingCartVoMap2">
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,s.original_price,s.sell_price,s.sku_name,
p.product_name,i.url,s.stock
FROM shopping_cart c
INNER JOIN product p
INNER JOIN product_img i
INNER JOIN product_sku s
ON s.sku_id=c.sku_id
AND p.product_id=c.product_id
AND i.item_id=c.product_id
WHERE i.is_main=1 and c.cart_id in
<foreach collection="cids" item="cid" separator="," open="(" close=")">
#{cid}
</foreach>
</select>
Sercive层实现类
@Override
public ResultVo getshopcartsbyCartids(String cids) {//从前端传入到后端的是字符串,
// 在service层进行拼接
String[] arr = cids.split(",");
List<Integer>cartIds=new ArrayList<>();
for (String s : arr) {
cartIds.add(Integer.parseInt(s));
}
List<ShoppingCartVo> shoppingCartList =
shoppingCartMapper.selectShoppingCartByICartIds(cartIds);
return new ResultVo(ResStatus.OK,"success",shoppingCartList);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!