JAVA向表里添加一条数据并返回ID

本文介绍了一个用于电子商务系统中订单信息插入的Java工具类OrderPreparedStatementCreator。该类使用Spring JDBC模块的PreparedStatementCreator接口实现,负责将订单信息及订单项详细数据批量插入到数据库中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OrderPreparedStatementCreator: 

package com.mmera.store.dao.util;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Map;

import org.springframework.jdbc.core.PreparedStatementCreator;

public class OrderPreparedStatementCreator implements PreparedStatementCreator {
 private static final String sql = "insert into store_order(orderSerial,orderZipCode,orderAddress,userId,orderReceiver,orderMessage,orderPhone,orderMobile,orderPayType,orderLogisticFee,orderTime) values(?,?,?,?,?,?,?,?,?,now())";
 private Map<Object, Object> order;
 public OrderPreparedStatementCreator(Map<Object,Object> order){
  this.order = order;
 }
 
 public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
  PreparedStatement ps = connection.prepareStatement(sql);
  ps.setString(1, order.get("orderSerial").toString());
  ps.setString(2, order.get("orderZipCode").toString());
  ps.setString(3, order.get("orderAddress").toString());
  ps.setInt(4, (Integer)order.get("userId"));
  ps.setString(5, order.get("orderReceiver").toString());
  ps.setString(6, order.get("orderMessage").toString());
  ps.setString(7, order.get("orderPhone").toString());
  ps.setString(8, order.get("orderMobile").toString());
  ps.setString(9, order.get("orderPayType").toString());
  ps.setDouble(10, (Double)order.get("orderLogisticFee"));
  return ps;
 }

}

 

 

public void insertOrder(Map<Object,Object> order,List<Map<?,?>> orderItems){
  KeyHolder kh = new GeneratedKeyHolder();
  PreparedStatementCreator psc = new OrderPreparedStatementCreator(order);
  getJdbcTemplate().update(psc, kh);
  Long orderId = kh.getKey().longValue();
  String sql = "insert into store_orderitem(orderId,orderItemSerial,orderItemBrand,orderItemCatena,orderItemName,orderItemPrice,orderItemSpec,orderItemStyle,productSerial) values(?,?,?,?,?,?,?,?,?)";
  for(int i=0;i<orderItems.size();i++){
   Map<?, ?> orderItem = orderItems.get(i);
   Object[] args = {
     orderId,
     orderItem.get("orderItemSerial"),
     orderItem.get("orderItemBrand"),
     orderItem.get("orderItemCatena"),
     orderItem.get("orderItemName"),
     (Double)orderItem.get("orderItemPrice"),
     orderItem.get("orderItemSpec"),
     orderItem.get("orderItemStyle"),
     orderItem.get("productSerial")
   };
   getJdbcTemplate().update(sql, args);
  }
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值