首页 > 代码库 > 生成订单:三个表(Products,Orders,OrderItem)
生成订单:三个表(Products,Orders,OrderItem)
1.有三个表(Product上,Orders,OrderItem)
分别创建对应的三个实体类
OrderItem中有外键Order_id 参考Orders中的id ;Product_id参考Product中的id;Orders中有外键User_id参考User中的id
sql 代码:
CREATE DATABASE day2017_04_05; USE day2017_04_05; CREATE TABLE `user` ( `id` INT(11) AUTO_INCREMENT, `username` VARCHAR(20) , `PASSWORD` VARCHAR(20) , `gender` VARCHAR(10) , `email` VARCHAR(50) , `telephone` VARCHAR(20) , `introduce` VARCHAR(100), `activeCode` VARCHAR(50) , `state` INT(11) , `role` VARCHAR(10) DEFAULT ‘普通用户‘, `registTime` TIMESTAMP , PRIMARY KEY (`id`) ) 商品表 CREATE TABLE `products` ( `id` VARCHAR(100) , `name` VARCHAR(40) , `price` DOUBLE , `category` VARCHAR(40) , `pnum` INT(11) , `imgurl` VARCHAR(100) , `description` VARCHAR(255) , PRIMARY KEY (`id`) ) 订单表 CREATE TABLE `orders` ( `id` VARCHAR(100) , `money` DOUBLE , `receiverAddress` VARCHAR(255) , `receiverName` VARCHAR(20) , `receiverPhone` VARCHAR(20) , `paystate` INT(11) , `ordertime` TIMESTAMP , `user_id` INT(11) , PRIMARY KEY (`id`), FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ) 订单项表 CREATE TABLE `orderitem` ( `order_id` VARCHAR(100) , `product_id` VARCHAR(100), `buynum` INT(11) , PRIMARY KEY (`order_id`,`product_id`), FOREIGN KEY (`order_id`) REFERENCES `orders` (`id`), FOREIGN KEY (`product_id`) REFERENCES `products` (`id`) )
实体类
public class Order { private String id; // 订单编号 private double money; // 订单总价 private String receiverAddress; // 送货地址 private String receiverName; // 收货人姓名 private String receiverPhone; // 收货人电话 private int paystate; // 订单状态 private Date ordertime; // 下单时间 private int userid; private List<OrderItem> orderItems; }
public class OrderItem { private Order order;//订单 private Product product; //商品 private int buynum; //购物数量 }
public class Product { private String id; // 商品编号 private String name; // 名称 private double price; // 价格 private String category; // 分类 private int pnum; // 数量 private String imgurl; // 图片路径 private String description; // 描述 }
servlet 操作
package com.learning.web.servlet; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import java.util.UUID; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.beanutils.BeanUtils; import com.learning.domain.Order; import com.learning.domain.OrderItem; import com.learning.domain.Product; import com.learning.domain.User; import com.learning.service.OrderService; @WebServlet("/createOrder") public class CreateOrderServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Order order=new Order(); User user = (User) request.getSession().getAttribute("user"); try { BeanUtils.populate(order, request.getParameterMap()); order.setId(UUID.randomUUID().toString()); order.setUserid(user.getId()); } catch (Exception e) { e.printStackTrace(); } List<OrderItem> orderItems=new ArrayList<OrderItem>(); //从session中获取cart,添加到订单项中 Map<Product, String> cart = (Map<Product, String>) request.getSession().getAttribute("cart"); for (Map.Entry<Product, String> map : cart.entrySet()) { OrderItem orderItem=new OrderItem(); orderItem.setBuynum(Integer.parseInt(map.getValue())); orderItem.setProduct(map.getKey()); orderItem.setOrder(order); orderItems.add(orderItem); } order.setOrderItems(orderItems); OrderService orderService=new OrderService(); orderService.createOrder(order); //生成订单,删除cart中的所有product cart.clear(); request.getRequestDispatcher("/pay.jsp").forward(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
public void createOrder(Order order) { try { ManageTheadLocal.startTransaction(); orderDao.createOrder(order); orderItemDao.createOrderItem(order); productDao.updateProductNumber(order); ManageTheadLocal.commit(); } catch (SQLException e) { ManageTheadLocal.rollback(); e.printStackTrace(); } }
public void createOrder(Order order) throws SQLException { QueryRunner queryRunner=new QueryRunner(C3P0Util.getDataSource()); queryRunner.update(ManageTheadLocal.getConnection()," insert into orders values(?,?,?,?,?,?,?,?)",order.getId(),order.getMoney(),order.getReceiverAddress(),order.getReceiverName(),order.getReceiverPhone(),order.getPaystate(),order.getOrdertime(),order.getUserid()); } public void createOrderItem(Order order) throws SQLException { List<OrderItem> orderItems = order.getOrderItems(); QueryRunner queryRunner=new QueryRunner(C3P0Util.getDataSource()); Object[][] params =new Object[orderItems.size()][]; for (int i = 0; i < params.length; i++) { params[i]=new Object[]{order.getId(),orderItems.get(i).getProduct().getId(),orderItems.get(i).getBuynum()}; } queryRunner.batch(ManageTheadLocal.getConnection()," insert into orderitem values (?,?,?) ",params ); } public void updateProductNumber(Order order) throws SQLException { List<OrderItem> orderItems = order.getOrderItems(); QueryRunner queryRunner=new QueryRunner(C3P0Util.getDataSource()); Object[][] params=new Object[orderItems.size()][]; for (int i = 0; i < params.length; i++) { params[i]=new Object[]{orderItems.get(i).getBuynum()}; } queryRunner.batch(ManageTheadLocal.getConnection()," update products set pnum=pnum-?", params); }
生成订单:三个表(Products,Orders,OrderItem)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。