电脑商城day05--购物车

1.数据创建

CREATE TABLE t_cart (
    cid INT AUTO_INCREMENT COMMENT '购物车数据id',
    uid INT NOT NULL COMMENT '用户id',
    pid INT NOT NULL COMMENT '商品id',
    price BIGINT COMMENT '加入时商品单价',
    num INT COMMENT '商品数量',
    created_user VARCHAR(20) COMMENT '创建人',
    created_time DATETIME COMMENT '创建时间',
    modified_user VARCHAR(20) COMMENT '修改人',
    modified_time DATETIME COMMENT '修改时间',
    PRIMARY KEY (cid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2.创建实体类

3.持久层

1.需要执行的sql语句

向购物车表中插入数据:insert into c_cart (cid除外) values (值列表)

当当前的商品已经在购物车中存在,则直接更新num的数量:updata t_cart set num=? where cid=?

在插入或者更新具体执行那个语句,取决于数据库中是否有当前这个购物车商品的数据,得去查询才能确定。:select * from t_cart where pid and uid

2.设计接口和抽象方法

创建一个CartMapper接口持久层文件

3.配置sql映射

在CartMapper.xml映射文件添加以上三个抽象方法的sql语句映射

4.业务层

1.规划异常

插入数据时可能产生异常:InsertException

更新数据时可能产生异常:updateException

2.接口和抽象方法

创建一个ICartService接口

3.实现接口

创建一个CartServiceImpl类

4.单元测试

5.控制层

1.没有要处理的异常

2.设计请求处理

3.完成请求方法的编写

6.前端页面

在product.html页面给加入购物车添加点击事件并发送ajax请求

在ajax函数中data参数的数据设置方式:

1.data:$("form表单选择").serialize()。当参数过多且在同一个表单中,字符串的提交

2.data:new FormData($("form表单选择")[0])。只适用于提交文件

3.data:"username=TOM"。适合参数值固定且参数值有限,可以进行手动拼接

  1. 使用json格式提交数据: data:{"username":"tom","age":"18","sex":0}

7.展示购物车页面

1.持久层

1.规划sql查询(多表查询如果字段不重复则不需要显示说明该字段属于那张表): select cid,uid,pid, t_cart.price,t_cart.num, t_product.image, t_product.title, t_product.price as realprice from t_cart left join t_product on t_cart.pid = t_product.id where uid=#{uid} order by t_cart.creat_time desc

2.设计抽象接口和方法

做一个VO对象:Value Object值对象,当进行select查询时,查询的属于数据多张表中的内容,此时发现结果集不能直接使用某个pojo实体类来接收,pojo实体类不能包含多表查询出来的结果,解决方法是:重新去构建一个新的对象,这个对象用户存储所查询出来的结果集对应的映射,所以把这个对象称之为值对象。

3.配置sql映射

4.单元测试

2.业务层

1.规划异常

2.接口于抽象方法

3.控制层

1.设计请求

2.实现请求处理

3.单元测试

4.前端页面

1.注释掉cart.js文件

2.form表单结构,action="orderConfirm.html"属性,tbody标签添加id="cart-list"属性,结算按钮类型改为button。

3.ready()函数来完成自动的ajax请求的提交和处理

8.增加购物车商品数量

1.持久层

1.规划需要执行的sql语句

执行更新t_cart表记录的num值,无需重复开发

根据cid的值来查询当前购物车这条数据是否存在:select * from t_cart where cid=?

2.接口和抽象方法

3.配置sql映射

4.单元测试

2.业务层

1.规划异常

1.在更新时会产生更新异常

2.查询的数据是否有访问的权限

3.查询的数据不存在CartNotFoundException异常

2.设计接口和抽象方法

3.控制层

1.处理异常

2.设计请求

3.完成请求

4.前端界面

9.显示勾选的购物车数据

1.持久层

1.规划SQL语句

用户在购物车列表页中通过随机勾选相关的商品,点击结算按钮后,跳转到结算页面,在这个页面中需要展示用户在上个页面所勾选的购物车对应的数据,列表的展示,而展示的内容还是在于购物车的表,两个页面需要用户勾选的够多cid传递给下一个页面: select cid,uid,pid, t_cart.price,t_cart.num, t_product.image, t_product.title, t_product.price as realprice from t_cart left join t_product on t_cart.pid = t_product.id where cid in(?,?,?,?) order by t_cart.creat_time desc

2.接口和抽象方法

3.实现sql映射

4.单元测试

2.业务层

1.规划异常

2.设计抽象方法

3.控制层

1.请求设计

2.完成请求设计

4.前端页面

1.将cart.html页面中的结算按钮改为submit

2.在orderConfirm.html页面中的body标签内的最后添加srcipt标签并在标签内部添加处理购物车“订单商品信息”列表展示的代码

3.购物车页面显示收货地址列表前端页面开发

收货地址存放在一个select下拉列表中,将查询到的当前登录用户的收货地址动态的加载到这个下拉列表中。从数据库的角度来讲,是一个select查询语句。已经编写了根据用的uid来查询用户数据。

orderconfirm.html页面中,收货地址数据的展示需要自动进行加载。需要将方法的逻辑放入ready中

声明showAddressList();方法中发送ajax请求

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值