• 订单生成案例详解


    分析:

    首先用户必须登陆

    将商品添加到购物车,在生成订单。

    我们需要一个订单表。

    在订单中我们需要包含商品,并且还需要收货人地址,收货人,联系方式信息。

    通过上面分析,我们会发现orders表需要与userproducts表关联。

    用户与订单之间   它们是一对多关系  用户是1  订单是多。

    在多的一方添加外键。

    订单与商品之间关系  它们是多对多关系  

    多对多关系,我们需要一张新的表来描述其对应关系.

    -- 订单表

    CREATE TABLE orders(

    id VARCHAR(50) PRIMARY KEY,

    receiverAddress VARCHAR(50),

    receiverName VARCHAR(20),

    receiverPhone VARCHAR(30),

    totalprice DOUBLE,

    user_id INT, -- user表做关联

    FOREIGN KEY orders(user_id) REFERENCES USER(id)

    )

    SELECT * FROM orders;

    -- 订单与商品之间多对多关系

    CREATE TABLE ordersItem(

    oid VARCHAR(50), -- 它是与orders表中的主键关联

    pid VARCHAR(50), -- 它是与products表中的主键关联

    itemprice DOUBLE,

    PRIMARY KEY (oid,pid),--联合主键

    FOREIGN KEY ordersItem(oid) REFERENCES orders(id),

    FOREIGN KEY ordersItem(pid) REFERENCES products(id)

    )

    生成订单:

    1. 要向orders表中insert
    2. 要向ordersItem表中insert
    3. 要修改商品表中的商品数量

    上述操作,需要使用事务控制。

    orders表中的insert数据.

    注意:我们向orders表中插入数据时,必须得到当前的用户,其实要的是当前用户的id.

    orderItem表中的insert

    一个订单中可能有多件商品,那么就需要注意了,我们向ordersItem表中插入数据时,可能是批处理。

    修改products表中商品数量

    这个操作可能也是一个批处理操作

    设计javaBean

    关于order数据的封装

    1.order.jsp页面提交的表单请求参数直接就封装到order对象中。

    2.登陆成功后我们会将user存储到session中,这时就可以直接从session中获取user,封装到order中。

    3.订单项的数据是从购物车中获取的,购物车是存储在session中的,也就是说,直接从session中获取购物车,将购物车中数据封装到  OrdersItem中,这时会得到一个List<OrdersItem>,在将这个集合封装到order中。

    service中调用dao中方法时,使用QueryRunner不能在使用有参数的,而要使用无参数的,因为我们要进行手动事务控制。

    在使用的query,update,batch方法就应该是有Connection参数的方法。

    当点击购物车中生成订单时,会跳转到order.jsp页面

    问题:怎样在order.jsp页面上生成数据

    cartjsp页面上修改

    order.jsp页面修改

    当订单的表单提交时,会向CreateOrderServlet发送请求。

    注意:我们在order.jsp页面上还需要一个

    要不然在servlet中是获取不到总价的。 

    在CreateOrderServlet中封装数据到Order对象中.

    封装表单中的请求参数

     

    封装用户信息

    封装订单项数据

    service中调用dao中方法完成订单创建操作

    注意需要事务控制

    具体详细信息见‘ajax案例文档’

  • 相关阅读:
    C#实现汉字转换为拼音缩写的代码
    C# 使用xsd文件验证XML 格式是否正确
    C#用天气预报的WebServices
    c# socket通信较完善方案
    C#操作MySQL数据库-----HelloWorld
    c# 自己制作一个简单的项目倒计时器
    C# 制作外挂常用的API
    C#中如何计算时间差?
    C# 图片保存到数据库和从数据库读取图片并显示
    c#加密 可逆与不可逆MD5 加密
  • 原文地址:https://www.cnblogs.com/MessiAndDream/p/6087695.html
Copyright © 2020-2023  润新知