订单查询功能通过Java实现,需设计订单表并创建实体类Order,利用JDBC连接数据库,编写OrderDao进行SQL查询,封装OrderService提供查询接口,最后通过测试类验证按订单号或用户ID查询的正确性。
订单查询功能是电商、支付等系统中的常见需求。使用Java实现时,需要结合数据库操作、业务逻辑处理和接口设计。以下是实现该功能的核心步骤和代码示例。
订单信息通常存储在数据库中。一个简单的订单表(orders)可能包含以下字段:
定义一个Java类来映射数据库中的订单记录:
public class Order { private String orderId; private String userId; private String productName; private Double amount; private String status; private String createTime;
// 构造函数 public Order() {} public Order(String orderId, String userId, String productName, Double amount, String status, String createTime) { this.orderId = orderId; this.userId = userId; this.productName = productName; this.amount = amount; this.status = status; this.createTime = createTime; } // Getter 和 Setter 方法 public String getOrderId() { return orderId; } public void setOrderId(String orderId) { this.orderId = orderId; } public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } public String getProductName() { return productName; } public void setProductName(String productName) { this.productName = productName; } public Double getAmount() { return amount; } public void setAmount(Double amount) { this.amount = amount; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public String getCreateTime() { return createTime; } public void setCreateTime(String createTime) { this.createTime = createTime; }}
3. 使用JDBC连接数据库并查询订单
通过JDBC执行SQL查询,获取订单数据并封装为Order对象:
import java.sql.*; import java.util.ArrayList; import java.util.List;public class OrderDao {
private String jdbcURL = "jdbc:mysql://localhost:3306/your_db"; private String jdbcUsername = "root"; private String jdbcPassword = "password"; protected Connection getConnection() { Connection connection = null; try { Class.forName("com.mysql.cj.jdbc.Driver"); connection = DriverManager.getConnection(jdbcURL, jdbcUsername, jdbcPassword); } catch (SQLException | ClassNotFoundException e) { e.printStackTrace(); } return connection; } // 根据订单ID查询订单 public Order findOrderByOrderId(String orderId) { Order order = null; String sql = "SELECT * FROM orders WHERE order_id = ?"; try (Connection conn = getConnection(); PreparedStatement pstmt = conn.prepareStatement(sql)) { pstmt.setString(1, orderId); ResultSet rs = pstmt.executeQuery(); if (rs.next()) { String userId = rs.getString("user_id"); String productName = rs.getString("product_name"); Double amount = rs.getDouble("amount"); String status = rs.getString("status"); String createTime = rs.getString("create_time"); order = new Order(orderId, userId, productName, amount, status, createTime); } } catch (SQLException e) { e.printStackTrace(); } return order; } // 查询某个用户的全部订单 public ListfindOrdersByUserId(String userId) { List orders = new ArrayList<>(); String sql = "SELECT * FROM orders WHERE user_id = ?"; try (Connection conn = getConnection(); PreparedStatement pstmt = conn.prepareStatement(sql)) { pstmt.setString(1, userId); ResultSet rs = pstmt.executeQuery(); while (rs.next()) { String orderId = rs.getString("order_id"); String productName = rs.getString("product_name"); Double amount = rs.getDouble("amount"); String status = rs.getString("status"); String createTime = rs.getString("create_time"); Order order = new Order(orderId, userId, productName, amount, status, createTime); orders.add(order); } } catch (SQLException e) { e.printStackTrace(); } return orders; } }
4. 提供服务接口和测试调用
创建服务类封装查询逻辑,并提供简单测试入口:
public class OrderService { private OrderDao orderDao = new OrderDao();public Order getOrderByOrderId(String orderId) { return orderDao.findOrderByOrderId(orderId); } public ListgetOrdersByUserId(String userId) { return orderDao.findOrdersByUserId(userId); } }
// 测试类 public class OrderQueryTest { public static void main(String[] args) { OrderService service = new OrderService();
// 查询指定订单 Order order = service.getOrderByOrderId("ORD123456"); if (order != null) { System.out.println("订单ID: " + order.getOrderId()); System.out.println("用户ID: " + order.getUserId()); System.out.println("商品: " + order.getProductName()); System.out.println("金额: " + order.getAmount()); System.out.println("状态: " + order.getStatus()); } else { System.out.println("未找到该订单"); } }}
基本上就这些。你可以根据实际需求扩展功能,比如支持按状态筛选、分页查询、模糊搜索等。如果项目使用了Spring Boot或MyBatis,可以进一步简化数据库操作。