购物车主要实现了添加商品至购物车、购物车列表、编辑购物车等三个功能,本文主要讲述了新峰商城购物车工作原理及添加商品至购物车功能的实现方法。
一、购物车模块简介
线下超市或商场的购物流程如下:
(1)进入商场
(2)获取购物车或者购物蓝
(3)在商场中四处逛
(4)在不同的区域选择不同的商品
(5)将想购买的商品放入购物车
(6)某些商品需要称重或者其它处理
(7)到收银台清点商品并计算价格
(8)结账
(9)离开商场并回家
新峰商城的购物车是将线下购物车进行抽象而开发一个功能,与线下实体的购物车不同,线上购物车模块的作用是存放商城用户挑选的商品数据。
二、购物车表结构设计
user_id 用户的ID,根据这个字段确定用户购物车中的数据
goods_id 关联的商品ID,根据这个字段查询对应的商品信息并显示到页面上
goods_count 购物车中某件商品的数量
create_time 商品添加到购物车中的时间
三、商品加入购物车功能的实现
数据层
(1)实体类
NewBeeMallShoppingCartItem实体类如下所示:
public class NewBeeMallShoppingCartItem{
private Long cartItemId;
private Long userId;
private Long goodsId;
private Integer goodsCount;
private Byte isDeleted;
private Date createTime;
private Date updateTime;
}
(2)Mapper接口
NewBeeMallShoppingCartItemMapper接口代码如下所示:
public interface NewBeeMallShoppingCartItemMapper{
//保存一条新记录
int insertSelective(NewBeeMallShoppingCartItem record);
//根据userId和goodsId查询记录
NewBeeMallShoppingCartItem selectByUserIdAndGoodsId(@Param("newBeeMallUserId") Long
newBeeMallUserId,@Param("goodsId") Long goodsId);
//根据userId查询当前用户已添加了多少条记录
int selectCountByUserId(Long newBeeMallUserId);
}
(3)Mapper映射文件
NewBeeMallShoppingCartItemMapper接口映射文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="ltd.newbee.mall.dao.NewBeeMallShoppingCartItemMapper">
<resultMap id="BaseResultMap" type="ltd.newbee.mall.entity.NewBeeMallShoppingCartItem">
<id column="cart_item_id" jdbcType="BIGINT" property="cartItemId"/>
<result column="user_id" jdbcType="BIGINT" property="userId"/>
<result column="goods_id" jdbcType="BIGINT" property="goodsId"/>
<result column="goods_count" jdbcType="INTEGER" property="goodsCount"/>
<result column="is_deleted" jdbcType="TINYINT" property="isDeleted"/>
<result column="create_time" jdbcType="TIMESTAMP" property="cr