From b527bd4e997dc3cb46c88a25855a5c9b1feddea7 Mon Sep 17 00:00:00 2001 From: nxist2202005014 <1463859337@qq.com> Date: Wed, 26 Jun 2024 09:49:00 +0800 Subject: [PATCH] ADD file via upload --- OrderDaoImpl.java | 151 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 OrderDaoImpl.java diff --git a/OrderDaoImpl.java b/OrderDaoImpl.java new file mode 100644 index 0000000..225b175 --- /dev/null +++ b/OrderDaoImpl.java @@ -0,0 +1,151 @@ +package flowershop.daoimpl; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +import flowershop.dao.OrderDao; +import flowershop.model.Order; + +public class OrderDaoImpl implements OrderDao { + + @Override + public List findAll() { + //方法用于查询所有订单信息,执行了一个SQL查询语句,将查询结果封装为Order对象列表并返回。 + String sql = "select orderid,userid,orderdate from order"; + List list = new ArrayList(); + try (// 2.创建数据库连接 + Connection conn = Jdbc.getConnection(); + // 3.创建语句对象 + PreparedStatement pstmt = conn.prepareStatement(sql); + // 4.绑定参数 + // 5.执行查询 + ResultSet rs = pstmt.executeQuery()) { + // 6.遍历结果集 + while (rs.next()) { + Order order = new Order(); + order.setOrderid(rs.getLong("orderid")); + order.setOrderdate(rs.getDate("orderdate")); + order.setUserid(rs.getString("userid")); + list.add(order); + } + } catch (SQLException e) { + // TODO 自动生成的 catch 块 + e.printStackTrace(); + } + return list; + } + + + @Override + public Order findById(String id) { + //方法根据订单ID查询特定订单信息,执行了一个带参数的SQL查询语句, + //将查询结果封装为Orderwjx对象并返回。在方法结束时,关闭了数据库连接。 + Connection conn = null; + PreparedStatement pstmt = null; + ResultSet rs = null; + try { + // 2.创建数据库连接 + conn = Jdbc.getConnection(); //1.加载驱动程序 + String sql = "select orderid,userid,orderdate,status,amount from order where orderid = ?"; + // 3.创建语句对象 + pstmt = conn.prepareStatement(sql); + // 4.绑定参数 + pstmt.setString(1, id); + // 5.执行查询 + rs = pstmt.executeQuery(); + // 6.遍历结果集 + if (rs.next()) { + Order order = new Order(); + order.setOrderid(rs.getLong("orderid")); + order.setUserid(rs.getString("userid")); + order.setOrderdate(rs.getDate("orderdate")); + return order; + } + } catch (SQLException e) { + e.printStackTrace(); + } finally { + Jdbc.close(rs, pstmt, conn); + } + return null; + } + + + @Override + public int create(Order order) { + //方法用于插入新的订单信息,执行了一个带参数的SQL插入语句,并打印出成功插入的数据条数。 + String sql = "insert into order(orderid,userid,orderdate,status,amount) values(?,?,?,?,?)"; + try (// 2.创建数据库连接 + Connection conn = Jdbc.getConnection(); + // 3.创建语句对象 + PreparedStatement pstmt = conn.prepareStatement(sql);) { + // 4.绑定参数 + pstmt.setLong(1, order.getOrderid()); + pstmt.setString(2, order.getUserid()); + // utilDate转化为sql date + java.util.Date date = order.getOrderdate(); + // java.sql.Date date = new java.sql.Date(now.getTime()); + // Timestamp比Date更准确 + pstmt.setDate(3, new java.sql.Date(date.getTime())); + pstmt.setTimestamp(3, new java.sql.Timestamp(date.getTime())); + pstmt.setInt(4, order.getStatus()); + pstmt.setDouble(5, order.getAmount()); + // 5.执行 + int affectedRows = pstmt.executeUpdate(); + System.out.printf("成功插入%d数据.\n", affectedRows); + } catch (SQLException e) { + // TODO 自动生成的 catch 块 + return -1; + + } + return 0; + } + + + @Override + public int modify(Order order) { + //根据订单ID更新订单金额。 + String sql = "update order set amount = ? where orderid = ?"; + try ( // 2.创建数据库连接 + Connection conn = Jdbc.getConnection(); + // 3. 创建语句对象 + PreparedStatement pstmt= conn.prepareStatement(sql) + ) { + // 4. 绑定参数 + pstmt.setDouble(1, order.getAmount()); + pstmt.setLong(2, order.getOrderid()); + // 5. 执行修改(C、U、D) + int affectedRows = pstmt.executeUpdate(); + System.out.printf("成功更新%d条数据。\n", affectedRows); + } catch (SQLException e) { + e.printStackTrace(); + } + return 0; + } + + + @Override + public int remove(Order order) { + //removewjx(Orderwjx orderwjx)方法用于删除订单信息,执行了一个带参数的SQL删除语句 + //并打印出成功删除的数据条数。 + String sql = "delete from order where orderid = ?"; + try ( // 2.创建数据库连接 + Connection conn = Jdbc.getConnection(); + // 3. 创建语句对象 + PreparedStatement pstmt = conn.prepareStatement(sql)) { + // 4. 绑定参数 + pstmt.setLong(1, order.getOrderid()); + // 5. 执行修改(C、U、D) + int affectedRows = pstmt.executeUpdate(); + System.out.printf("成功删除%d条数据。\n", affectedRows); + } catch (SQLException e) { + e.printStackTrace(); + } + return 0; + } + } +//try-with-resources语句,确保了在方法结束时数据库连接、语句对象和结果集会被正确关闭,从而避免了资源泄露问题。 +