购物车页面——>跳转到结算页面总结:

因为需要: 传 chart购物车信息和人地址信息从订单界面到付款界面 , 传的data是人信息+ 商品信息1+商品信息2+… (数据库存的时候按顺序)

  • 整体思路: 非常重要 非常重要

在购物车页面跳转到—>结算页面

  1. 编写: com.demo.po创建类文件 CartVo.java ——创建集合, 通过购物车的ids字符串 得到很多个对象(很多个数据行), 添加get 、set方法.
  2. 编写: com.demo.dao创建接口文件BuyerDao.java——写方法, 通过id得到购买者对象的集合map
  3. 编写:com.demo.mapper创建xml文件—— BuyerMapper.xml实现接口, 具体通过此方法想要查找出的sql信息
  4. 编写: com.demo.dao创建接口文件CartDao.java——写方法, 通过购物车对象的id值得到每个购物车对象map类型的list集合
  5. 编写:com.demo.mapper创建xml文件—— CartMapper.xml实现接口, 具体通过此方法想要查找出每个购物车对象的sql信息
  6. 编写:com.demo.service创建接口文件OrderService.java——写方法,通过购物车对象和购买者的id值输出一个map类型的list集合
  7. 编写:com.demo.service创建类文件——OrderServiceImpl.java实现接口, 初始化两个Dao对象(CartDao和BuyerDao),将它们存在一个map类型的list集合中,并返回这个集合
  8. 编写com.demo.action创建java文件——OrderController.java, 初始化Orderservice对象, 创建方法,输入ids和服务器请求, 将ids字符串通过,分割变成字符串数组再转换成int格式, 存入到CartVo对象的id中, 并将CartVo对象输入给service.getInfoForOrder 方法, 得到一个map类型的list集合, 将此集合给“data”, 并返回给jsp界面
  9. 编写Cart.jsp——使其获取到ids, 并将其提交给OrderController.java

以下为具体实践步骤及代码

  • CartVo.java ——传ids, ids是界面上的购物车所有购买信息, 有setIds和getIds方法

    package com.demo.po;
    import java.util.ArrayList;
    import java.util.List;public class CartVo {List<Integer> ids=new ArrayList<Integer>();public List<Integer> getIds() {return ids;}public void setIds(List<Integer> ids)this.ids = ids;}
    }
    
  • BuyerDao.java—— 通过id传map类型的购买者信息, 需要用id为getById函数传递

package com.demo.dao;import java.util.Map;public interface BuyerDao {public Map<String, Object> getById(Integer id);}
  • BuyerMapper.xml——写sql语句,与BuyerDao.java搭配写 id、parameterType、resultType、sql语句. ——从bbs_buyer表中找到id的对应的全部信息
    注意: Mybatis的动态sql: 可以借鉴此博客: https://www.cnblogs.com/ysocean/p/7289529.html
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper SYSTEM "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper  namespace="com.demo.dao.BuyerDao">
<select id="getById" parameterType="int" resultType="map" >
select * from bbs_buyer where id=#{id}
</select>
</mapper>
  • CartDao.java——写接口, 传过来购物车所有购买信息,得到一串数组,数组里面的内容是map(包含一个个购物车信息)
package com.demo.dao;import java.util.List;//util
import java.util.Map;import com.demo.po.Cart;
import com.demo.po.CartVo;public interface CartDao {//只选部分id查询, 查询public List<Map<String, Object>> getByIds(CartVo v);
}
  • CartMapper.xml——写sql语句,与BuyerDao.java搭配写 id、parameterType、resultType、sql语句. ——(mybatis动态SQL语句), 接收界面上选中的购物车商品的id,并从数据库中找出对应的一条信息
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper SYSTEM "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.demo.dao.CartDao">
<!-- mybatis动动态sql  -->
<select id="getByIds" parameterType="com.demo.po.CartVo" resultType="map"  >
select * from bbs_cart
<where><foreach collection="ids" item="id" open="id in(" close=")" separator=",">#{id}</foreach>
</where>
</select></mapper>
  • OrderService.java——对数据进行处理,如何操作数据库——写接口, 接收CartVo v,Integer buyerid 参数, getInfoForOrder 函数得到List<Map<String, Object>>, 一个数组,里面是map类型的人的数据+购物车数据
package com.demo.service;import java.util.List;
import java.util.Map;import com.demo.po.CartVo;
import com.sun.corba.se.spi.ior.ObjectKey;public interface OrderService {//返回chart购物车和人   订单->  付款界面     List存有序数列 List<map map map >//人信息+ 商品信息1+商品信息2+...public List<Map<String, Object>> getInfoForOrder(CartVo v,Integer buyerid);
}
  • OrderServiceImpl.java——一个实现类,实现OrderService.java接口中的方法

(其中用到CartDao 、BuyerDao :

BuyerDao.java—— getByIds 方法; 通过id传map类型的购买者信息, 需要用id为getById函数传递

CartDao.java——getById 方法; 写接口, 传过来购物车所有购买信息,得到一串数组,数组里面的内容是 map(包含一个个购物车信息)

)

package com.demo.service;import java.util.List;
import java.util.Map;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import com.demo.dao.BuyerDao;
import com.demo.dao.CartDao;
import com.demo.po.Cart;
import com.demo.po.CartVo;@Service
public class OrderServiceImpl implements OrderService {@Autowired
CartDao dao1;
@Autowired
BuyerDao  dao2;@Overridepublic List<Map<String, Object>> getInfoForOrder(CartVo v, Integer buyerid) {// TODO Auto-generated method stubList<Map<String, Object>> list=dao1.getByIds(v);list.add(0,dao2.getById(buyerid));return list;}
}
  • OrderController.java——(接到请求决定调用哪个业务,

( OrderService.java中函数: getInfoForOrder——传CartVo v,Integer buyerid返回 List<Map<String, Object>>一个数组,里面是map类型的人的数据+购物车数据 )

package com.demo.action;import java.util.List;
import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;import com.demo.po.CartVo;
import com.demo.service.OrderService;
@Controller
@RequestMapping("/order")
public class OrderController {@AutowiredOrderService service;@RequestMapping("/getorder")public String getorder(String ids,HttpServletRequest request){System.out.println("——————————ids:"+ids);String[] tmp=ids.split(",");CartVo v=new CartVo();List<Integer> list=v.getIds();for(String s:tmp){list.add(Integer.parseInt(s));}List<Map<String,Object>> l=service.getInfoForOrder(v, 1);request.setAttribute("data", l);return ids;}
}
  • Order.jsp——显示数据
 ${data}
  • Cart.jsp——结算 页面的显示
<script type="text/javascript">
function trueBuy(){var ids="";var a=$("input[type=checkbox]");for(var i=1;i<a.length;i++){if($(a[i]).prop("checked")==true){ids+=$(a[i]).val()+",";}}ids=ids.substring(0,ids.length-1);window.location.href="<%=basePath%>order/getorder?ids="+ids;
}
</script>

电商实习项目第六天(7月1日)相关推荐

  1. 电商实习项目第二天(6月25日)

    在src- jdbc.properties中修改数据库名称.密码 运用mybatis generator修改 ->将8个java文件填入到: src- com.demo.po 中并创建ToStr ...

  2. 电商实习项目第七天(7月2日)

    总结容易出现的错误: 页面错误中的--标签错误 链接加BathPath fn: 一定要引入 c:forEach 时 要写对名字, 注意加空格 service加 @Service controller加 ...

  3. 1个人,3个月业余时间,采用Flutter,居然仿写了一个淘宝电商开源项目

    来源 | https://www.jianshu.com/p/194448388ce9 前言 Flutter现在如火如荼,Google也在大力推广,是到了学习Flutter的时候了,今天推荐一款用Fl ...

  4. 视频教程-全新大数据企业电商数据仓库项目实战教程-大数据

    全新大数据企业电商数据仓库项目实战教程 张长志技术全才.擅长领域:区块链.大数据.Java等.10余年软件研发及企业培训经验,曾为多家大型企业提供企业内训如中石化,中国联通,中国移动等知名企业.拥有丰 ...

  5. 分布式电商网络项目BitCherry受邀出席越南河内创新峰会,积极建设越南社区

    2019年8月29日至8月30日,为期两天的"Hanoi Innovation Summit 2019"创新峰会在越南河内国家会议中心召开. 近年来,越南政府积极拥抱区块链技术,这 ...

  6. 01-Flutter移动电商实战-项目学习记录

    01-Flutter移动电商实战-项目学习记录 一直想系统性的学习一下 Flutter,正好看到该课程<Flutter移动电商实战>的百度云资源,共 69 课时,由于怕自己坚持不下去(经常 ...

  7. Django电商网站项目(7)-部署与总结

    将前述4个模块完成后项目的全部功能就完成了,在本地已经可以实现网站的基本功能(从用户注册到订单评论),但开启服务器时使用的是Django自带的测试用服务器,因此仍需要将其部署到真正的可用于工程的服务器 ...

  8. 基于Vue开发的电商APP项目——蘑菇街app

    基于Vue开发的电商APP项目--蘑菇街 项目源码:https://github.com/Limna777/Shopmall.git 1.项目描述 2.使用的插件或第三方库 3.页面主要实现的功能 1 ...

  9. 大型电商实战项目,助力2021年高薪

    文章目录 序言 推荐背景 项目介绍 整体架构图形 热点技术栈 项目特点 适合人群 对比番外类似的项目 痛点和选择 序言 2021 新的一年开始,祝愿大家工作顺利,事事顺心.如果你有幸看到这一篇文章,请 ...

最新文章

  1. create-react-app支持antd按需导入
  2. 20个非常有用的PHP类库
  3. 《Python核心编程 》笔记-第二章+第三章
  4. 改进同步等待的网络服务端应用 (转)
  5. 【Python】30天进阶Python!这个Github项目你值得拥有!
  6. Windows 10强推新功能:能否让你的电脑更快
  7. Intel Core Enhanced Core架构/微架构/流水线 (10) - 先进存储器访问
  8. Python日志保存 -- print内容输出到txt文件、nohup时的输出保存
  9. PAIP.利用SyncML协议来同步备份手机短信联系人.txt
  10. window安装python27和配置环境变量
  11. 二分查找算法(Java)
  12. 蓝牙音箱CSR芯片系列解密
  13. 上传Android library到JitPack
  14. java 农历公历转换_JAVA版农历和阳历相互转换源码
  15. 入门-误差逆传播算法
  16. coldfusion_ColdFusion教程:第一部分
  17. C++ limits头文件的用法(numeric_limits)
  18. 创新BMW X7 与你一路前行
  19. as3读写本地xml/txt
  20. 三菱机械臂demo程序

热门文章

  1. Locust(性能测试)
  2. 数据结构-链表带环问题
  3. sql添加字段并加备注、默认值
  4. 网页变灰色前端是如何实现的?
  5. 简述计算机中声音信息的表示方法,多媒体计算机中声音信息的表示
  6. 扫码登录背后的实现原理
  7. Ubuntu tar 解压的时候报错 tar: Ignoring unknown extended header keyword...解决方案
  8. Exception(异常) 和 Error(错误)区别解析
  9. CODESYS开发教程2-设备添加
  10. 导线网平差程序系统设计—CSU测绘实习