订单模块之添加订单之DAO层实现

简介: 快速学习订单模块之添加订单之DAO层实现

开发者学堂课程【Java Web项目实战2:图书商城订单模块之添加订单之DAO层实现】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/35/detail/782


订单模块之添加订单之DAO层实现


内容简介:

一、生成订单的整体思路

二、如何用代码实现订单生成


一、生成订单的整体思路

生成订单时必然是先对购物车进行一个一键购买后生成一个订单,即真正发起一个订单是在购物车上。


1.点击一键购买后程序流程来到OrderServlet#add()

①创建 Order 对象

*其中订单是通过购物车形成的

*从 session 中获取 cart

*然后使用 cart 来生成 order

*清空购物车

②将对象用来调用 service 的 add(Order order)方法

③保存生成的订单,转发到  /jsos/order/desc.jsp


2.生成订单后创建条目标OrderServlet#add(Order)

操作应该是一个事务

①保存订单

②保存该订单中的所有条目


3.提供方法OrderDao

① addOrder(Order order)

② addOrderItemList(List<OrderItem>orderItemList)(用批处理)


4.显示当前订单/jsps/order/desc.jsp

 

5.生成订单整体流程图如下:

image.png

二、实现生成订单

1.从 DAO 开始,完成第一个功能

添加订单,处理 util 的 Date 转换成 sql 的 Timestamp

public void addOrder(Order order){

 try{

     String sql = “insert into order values(?,?,?,?,?,?)”;

      Timestamp timestamp=new Timestamp(order,getOrdertime(),getTime()):

      Object()parama=(order.getOid(),timestamp,order.getTotal(),

            Order.getState(),order.getOwner().getVid(),

            Order.getAddress());

       qr.update(sql,params);

   } catch (SQLException e);{

      Throw new RuntimeException (e);

}

image.png


插入订单条目

public void addOrderItemList(List<OrderItem>orderItemList) {

QueryRunner类的batch(String sql ,Object[ ] [ ] params),其中params 是多个一位数组,每个一位数组都与 sql 在一起执行一次,多个一维数组就执行多次。

           try{

              String sql = “insert into order values(?,?,?,?,?,?)”;

把 orderItemList 转换成两维数组,把一个 OrderItem 对象转换成一个一维数组。

              Object[][]params=new Object[orderItemList,size()][ ];

循环遍历 orderItemList,使用每个 orderItem 对象 为 params 中每个一位数组赋值

              for (int I =0;i < orderItemList.size();i++){

                 orderItem item = orderItemList.get(i);

                 params[i]=new Object [ ]{item.getIid(),item.getCount(),

                         item.getSubtotal(),item.getOrder().getOid(),

                         item.getBook().getBid());

}

执行批处理

qr.batch(sql,params);

        } catch(SQLException e){

            Throw new RuntimeException(e);

}

image.png

image.png

2.来到 service 中,完成第二个功能

添加订单,需要处理事务

        public void add(Order order){

        }


3.来到 web.serviet,添加方法

添加订单,把 session 中的车用来生成 Order 对象

        public String add(HttpservietRequest requst,HttpServietResponse response)

               throwa ServletException,IOException{

            return null;

         }

相关文章
|
人工智能 自然语言处理 搜索推荐
Perplexity AI和秘塔AI相比如何?
【2月更文挑战第16天】Perplexity AI和秘塔AI相比如何?
1624 1
Perplexity AI和秘塔AI相比如何?
|
域名解析 Linux Docker
CentOS8 安装 Docker
本文主要为大家讲解在CentOS8 上安装 Docker的过程,以及安装中的常见问题解决。
24014 2
CentOS8 安装 Docker
|
小程序 JavaScript Java
微信小程序的后端开发需要使用什么语言?
【8月更文挑战第22天】微信小程序的后端开发需要使用什么语言?
1867 65
|
9月前
|
人工智能 API 数据库
Cognita:小白也能搭建 RAG 系统,提供交互界面的开源模块化 RAG 框架,支持多种文档检索技术
Cognita 是一个面向生产环境的开源模块化 RAG 框架,支持本地部署、无代码 UI 和增量索引,帮助开发者轻松构建和扩展生产级应用。
487 11
Cognita:小白也能搭建 RAG 系统,提供交互界面的开源模块化 RAG 框架,支持多种文档检索技术
|
Oracle 关系型数据库 MySQL
OceanBase兼容性
【8月更文挑战第13天】OceanBase兼容性
1336 5
|
前端开发 搜索推荐 API
【Prompt Engineering:ReAct 框架】
ReAct 框架由 Yao 等人(2022)提出,结合大语言模型(LLMs)生成推理轨迹与任务操作,交替进行推理与行动。此框架允许模型与外部环境(如知识库)互动,以动态更新操作计划并处理异常。ReAct 在语言和决策任务上表现优异,提升模型的人类可解释性和可信度。研究显示,ReAct 优于多个基准模型,尤其在结合链式思考时效果最佳。通过实例演示,ReAct 能有效整合内外部信息,优化推理过程。
710 9
【Prompt Engineering:ReAct 框架】
|
11月前
|
缓存 人工智能 自然语言处理
GraphRAG、Naive RAG框架总结主流框架推荐(共23个):LightRAG、nano-GraphRAG、Fast-GraphRAG、Dify、RAGflow等
GraphRAG、Naive RAG框架总结主流框架推荐(共23个):LightRAG、nano-GraphRAG、Fast-GraphRAG、Dify、RAGflow等
|
存储 Java 关系型数据库
基于Java和MySQL实现的大学生学籍管理系统(毕业设计附完整项目代码)
基于Java和MySQL实现的大学生学籍管理系统(毕业设计附完整项目代码)
2336 0
基于Java和MySQL实现的大学生学籍管理系统(毕业设计附完整项目代码)
|
运维 监控 前端开发
微服务灰度发布的底层原理是什么?
微服务灰度发布的底层原理是什么?
194 1
|
11月前
|
机器学习/深度学习 存储 编解码
什么是图像噪声?是如何产生的?图像去噪技术都有哪些?
图像噪声是在图像采集、传输和处理过程中产生的像素值异常现象,主要由光子计数统计、电子偏移和放大器噪声等因素引起。噪声影响图像质量,降低信噪比,使特征难以识别。图像去噪技术包括传统方法(如空间域滤波、频域滤波、图像压缩和超糅合)和基于深度学习的方法(如卷积神经网络、残差网络和生成对抗网络),旨在有效去除噪声,提高图像质量。