订单模块之添加订单之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;

         }

相关文章
|
Kubernetes 容器 Perl
k8s命名空间
k8s命名空间
600 0
|
存储 程序员 C语言
C语言变量命名规则
C语言变量命名规则
1580 0
|
资源调度 分布式计算 监控
|
IDE 程序员 开发工具
Python 进阶指南(编程轻松进阶):三、使用 Black 工具来格式化代码
Python 进阶指南(编程轻松进阶):三、使用 Black 工具来格式化代码
535 0
|
XML Dubbo fastjson
FastJson - 设置默认参数,全局配置方式及爬坑
FastJson - 设置默认参数,全局配置方式及爬坑
2609 0
|
3月前
|
人工智能 程序员 API
别再盲目卷Skills了!大模型时代的工具调用(Tool-Use),正在迎来底层范式革命
本文深度剖析Skills(技能包)的本质:当前人工硬编码的Skills只是弥补大模型执行力不足的过渡性“补丁”,而非Agent终局方案。文章指出其三大痛点——幻觉调用、上下文过载、缺乏自适应,并前瞻性提出四大演进路径:自主习得技能、GUI/OS级原生操作、MCP协议标准化、推理与执行架构融合,揭示Skills将从“人工编写”迈向“智能体自主进化”的必然趋势。
384 0
别再盲目卷Skills了!大模型时代的工具调用(Tool-Use),正在迎来底层范式革命
|
3月前
|
机器学习/深度学习 自然语言处理 监控
大模型应用:Qwen1.5+ChatGLM3联合评测:不同体量大模型意图识别差异验证.122
本文对比评测Qwen1.5-1.8B、ChatGLM3-6B及语义向量模型在意图识别任务中的表现,从准确率、召回率、F1值、响应时间等维度深入分析。实验表明:小模型Qwen1.8B识别能力弱、稳定性差;ChatGLM3-6B达100%宏平均F1,精度卓越但耗时高;混合架构(向量模型兜底+大模型攻坚)兼顾速度与精度,是落地优选方案。
306 2
|
3月前
|
人工智能 安全 Serverless
云计算发展趋势全景解读:2026年技术决策者需要关注什么?
云计算正在从"基础设施搬迁"转向"智能化运行时"。AI原生架构、边缘混合部署、FinOps精细化治理、数据主权合规和零信任安全是当前五条主线,技术决策者需要从业务场景出发,重新审视云架构的选型逻辑。
|
6月前
|
存储 弹性计算 前端开发
阿里云服务器租用价格:活动价500元以内云服务器配置与价格参考
阿里云2026年推出多款500元内的云服务器,包括轻量应用服务器、经济型e实例、通用算力型u1及u2a实例等,配置从2核2G到2核4G不等,满足个人学习、小型企业官网、小程序后端等多样化需求。活动价格低至38元/年起,且新老用户均可享受优惠。购买前建议先领券,进一步降低成本。用户应根据业务需求、流量预估及存储需求,选择最适合的云服务器实例。
527 5

热门文章

最新文章