Smiling & Weeping

              ----世界上美好的东西不太多,立秋傍晚从河对岸吹来的风,

加入购物车

1.数据创建--创建t_cart

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)

)ENGING=InnoDB DEFAULT CHARSET=utf8;

<!-- INSERT INTO 和 VALUES 必须一一对应 -->

<!-- INSERT INTO 和 VALUES 必须一一对应 -->

<!-- INSERT INTO 和 VALUES 必须一一对应 -->

1.2.创建实体类

1.3.持久层

1.3.1规划执行的SQL语句

1.3.1.1想购物车表中插入数据

insert into t_cart (cid除外) values(值列表)

1.3.1.2当前的商品已经在购物车中存在,则直接更新number的数量即可

update t_cart set num=? where cid=?

1.3.1.3在插入或者更新具体执行哪个语句,取决于数据库中是否有当前这个购物车的数据,得去查询才能确定

select * from t_cart where cid=? and uid=?

1.3.2设计接口和抽象方法

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

1.3.3SQl映射

1.3.3.1创建一个CartMapper.xml映射文件,添加三个以上抽象方法的SQL语句映射

1.4.业务层

1.4.1规划异常

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

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

1.4.2接口和抽象方法

创建一个ICartService接口文件

1.4.3实现接口

创建一个CartServiceImpl的实现类

再创建一个对应的测试类

1.5.控制层

1.5.1没有需要处理的异常

1.5.2设计请求处理的设计

/carts/add_to_cart

GET

参数:pid,amount,session

JsonResult<void>

1.5.3请求处理方法的编写

1.5.4在product.html页面给【添加购物车】按钮点击事件,并发送ajax请求

2展示购物车列表

2.1持久层

2.1.1规划SQL语句

##多表查询,如果字段不重复,则不要声明字段属于哪张表

SELECT t_cart.price , t_cart.num , cid , uid , pid ,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

//把这个购物车表作为主表去连接商品表,连接的条件是pid和id的字段相等才可以做这样的一个连接

WHERE uid=#{uid}

ORDER BY t_cart.createdTime DESC

2.2设计接口和抽象方法

VO:对象Value Object: 值对象。当进行select查询时,查询结果属于多张表的内容,此时发现结果集不能直接使用某个POJO实体类来接受,POJO实体类不能包含多表查询出来的结果。

解决方式是:重新构建一个新的对象把这个对象用户存储所查询出来的结果集对应的映射,把这样的对象称为 值对象。

2.3映射SQL

2.4业务层

2.4.1编写业务层的接口方法

2.4.2在实现类中实现此方法

2.5控制层

2.5.1设计请求

/carts/

GET

JsonResult<List<CartVO>>

2.5.2实现请求处理的方法

3增加购物车商品数量

3.1持久层

3.1.1规划执行的SQL语句

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

update t_cart set num=?,modified_user=?,modified_time=? where cid

3.1.1.2根据cid的值来查询当前的购物车这条数据是否存在

select * fromt_cart where cid={cid}

对于resultMap映射来说,可以返回一个复杂的对象

对于resultType来说,返回简单的String,int,Integer

3.1.2接口和抽象方法

3.1.3在映射文件中配置SQL语句的映射

3.2业务层

3.2.1规划异常

3.2.1.1在更新时会产生异常

3.2.1.2查询到的数据是否有访问的权限

3.2.1.3查询的数据不存在,抛出:CartNotFoundException,五个构造方法

3.2.2设计接口和抽象方法

3.3控制层

3.3.1处理异常

3.3.2设计请求

请求路径/carts/{cid}/num/add

Integer cid , token

JsonResult<Integer>

3.3.3处理请求

4购物车结算(显示勾选的购物车数据)

4.1持久层

4.1.1规划SQL语句

用户在购物车列表页中通过随机勾选相关的商品,在订单点击结算按钮后,跳转到结算页面中,需要展示用户在上个页面所勾选的购物车对应的数据。列表的展示,而展示的内容还是在于购物车的表。两个页面需要将用户勾选的多个cid传给下一个页面

4.1.2接口和抽象方法

4.1.3SQL映射

进行单元测试

4.2业务层

4.2.1没有需要进行异常的规划

4.2.2设计业务层接口中的抽象方法

4.2.3完成抽象方法的设计

4.3控制层

4.3.1请求的设计

/carts/list

Integer cids , token

POST

JsonResult<List<CartVO>>

4.3.2完成请求处理方法的定义声明

4.4前端页面中计算具体金额(后端已经将购物车中的商品个数种类用list传递给前端了)

只需要遍历list中的商品totalPrice += num*price即可

totalPrice += list[i].price*list[i].num;

$("#total-price").html(allPrice);

4.4.1将cart.html页面中“结算”按钮属性更改成type="submit"

4.4.2orderConfirm.html页面中添加自动加载从上个页面传递过来的cids数据,再去请求ajax中进行填充当前页面的某个区域

Java实践项目 - 购物车模块的更多相关文章

  1. python-django框架-电商项目-购物车模块开发_20191125

    python-django框架-电商项目-购物车模块开发 商品详情页js代码: 在商品详情页,有加入购物车按钮, 点击加减号可以增加减少,手动输入也可以, 点击加入购物车,就要加过去, 先实现加减的操 ...

  2. Java开源生鲜电商平台-购物车模块的设计与架构(源码可下载)

    ava开源生鲜电商平台-购物车模块的设计与架构(源码可下载) 说明:任何一个电商无论是B2C还是B2B都有一个购物车模块,其中最重要的原因就是客户需要的东西放在一起,形成一个购物清单,确认是否有问题, ...

  3. 基于 Maven 的多模块 Java ( Spring ) 项目构建

    索引: 开源Spring解决方案--lm.solution 参看代码 GitHub: solution/pom.xml pojo/pom.xml mapper/pom.xml common/pom.x ...

  4. 《Java 程序设计》课堂实践项目 课后学习总结

    <Java 程序设计>课堂实践项目 课后学习总结 String类的使用(sort) 目录 Linux命令(sort) 课堂实践 课后思考 学习老师的代码之后的思考:int与Integer ...

  5. 《Java 程序设计》课堂实践项目汇总链接

    1.<Java 程序设计>课堂实践项目-命令行参数 2.<Java 程序设计>课堂实践项目-mini dc 3.<Java 程序设计>课堂实践项目-Arrays和S ...

  6. 《Java 程序设计》课堂实践项目-类定义

    <Java 程序设计>课堂实践项目类定义 课后学习总结 目录 改变 类定义实验要求 课堂实践成果 课后思考 改变 修改了博客整体布局,过去就贴个代码贴个图很草率,这次布局和内容都有修改. ...

  7. 《Java 程序设计》课堂实践项目-简易计算器

    <Java 程序设计>课堂实践项目简易计算器 课后学习总结 目录 改变 简易计算器实验要求 课堂实践成果 课后思考 改变 修改了博客整体布局,过去就贴个代码贴个图很草率,这次布局和内容都有 ...

  8. 《Java 程序设计》课堂实践项目-Arrays和String单元测试

    <Java 程序设计>课堂实践项目-Arrays和String单元测试 课后学习总结 目录 改变 Arrays和String单元测试实验要求 课堂实践成果 课后思考 改变 修改了博客整体布 ...

  9. 20155308 2016-2017-2《Java程序设计》课堂实践项目

    20155308 2016-2017-2<Java程序设计>课堂实践项目 在java.lang包中有String.split()方法,返回是一个数组 我在应用中用到一些,给大家总结一下,仅 ...

  10. # 20155308 2016-2017-2《Java程序设计》课堂实践项目 5月17日

    20155308 2016-2017-2<Java程序设计>课堂实践项目 5/17 本次因为git出现了问题,所以没有按时提交我的代码 问题一 在IDEA中对P145 MathTool.j ...

随机推荐

  1. Doris(一) -- 简介和安装

    Doris 简介 Doris 概述 Apache Doris 由百度大数据部研发 (之前叫百度 Palo,2018 年贡献到 Apache 社区后,更名为 Doris), 在百度内部,有超过 200 ...

  2. 如何科学地利用MTTR优化软件交付流程?

    谷歌提出的衡量 DevOps 质量的 DORA 指标让 MTTR(平均恢复时间) 名声大振.在本文中,你将了解到 MTTR 的作用.为什么它对行业研究很有用.你可能被它误导的原因以及如何避免 MTTR ...

  3. Java方法的概念以及方法的四种语法

    一.方法 方法的概念 ​ 将一个功能抽取出来,放在类中的大括号中,形成一个独立的功能,当需要使用该功能时,则调用它,这样可以增强代码的复用性(重复利用),并解决代码的冗余现象. 方法的语法: ​ [访 ...

  4. CentOS Linux 7 配置 nginx 支持 CGI

    Nginx 本身不能执行外部程序,Nginx 处理 PHP 是通过 PHP 的 fastcgi 管理器(php-fpm)进行处理,然后 nginx 再将结果返回给用户:所以如果我们需要通过 cgi 程 ...

  5. JIRA安装

    JIRA安装 操作系统: 阿里云centos6.8 域名: yan.jzhsc.com 1.安装与配置JAVA sudo -u root -H bash # 在oracle官网下载JDK,安装并配置环 ...

  6. AB实验:科学归因与增长的利器

    第一章 AB实验的基本原理和应用 AB实验的相关概念: 3个基本参数:实验参与单元.实验控制参数.实验指标 2个核心价值:验证因果关系.量化策略效果 2个关键特性:先验性.并行性 基本流程:分流 -& ...

  7. 了解O2OA(翱途)开发平台中的VIP应用

    使用O2OA(翱途)开发平台可以非常方便地进行项目的业务需求开发与实施,O2OA(翱途)开发平台并不限制实现的系统类型,所以能实现的系统很多,最终呈现的项目成果也是多样性的,可能是OA系统,可能是人力 ...

  8. 【Springboot】SpringBoot-Admin 服务监控+告警通知

    SpringBoot-Admin 服务监控 简单介绍 Spring Boot Actuator 是 Spring Boot 自带的一个功能模块, 提供了一组已经开箱即用的生产环境下常用的特性和服务,比 ...

  9. 数据安全没保证?GaussDB(for Redis)为你保驾护航

    摘要:GaussDB (for Redis)通过账号管理.权限隔离.高危命令禁删/重命名.安全IP免密登录.实例回收站等企业级特性,保障用户数据库数据和信息安全. 本文分享自华为云社区<数据安全 ...

  10. 云储存选择做Hexo博客图床(腾讯云、七牛云、网易云)

    前言 博客里需要添加很多图片作为内容的补充,但是把图片放在本地博客文件夹里,上传到网上后,加载这些图片就是一个很大的问题,他们会拖累网页加载的速度,所以建议把图片放图床里,通过外链来访问和加载这些图片 ...