本系統包含 5 個核心 POJO,對應數據庫表結構:
public class Book {
private Integer id;
private String isbn;
private String title;
private String author;
private String publisher;
private Double price;
private Integer stockQuantity;
private String category;
private String description;
private Date publishDate;
// Getter/Setter、toString、equals/hashCode 省略
}
public class BookStockHistory {
private Integer id;
private Integer bookId;
private Integer changeQuantity; // 正數入庫,負數出庫
private String changeType; // PURCHASE, SALE, RETURN, ADJUSTMENT
private String operator;
private Date changeTime;
private String remark;
// Getter/Setter 省略
}
public class Order {
private Integer id;
private String orderNo;
private Integer userId;
private Date orderTime;
private Double totalAmount;
private String status; // PENDING, PAID, SHIPPED, COMPLETED, CANCELLED
private String shippingAddress;
private String receiverName;
private String receiverPhone;
private List items; // 關聯明細
// Getter/Setter 省略
}
public class OrderItem {
private Integer id;
private Integer orderId;
private Integer bookId;
private Integer quantity;
private Double unitPrice;
private Double subtotal;
private Book book; // 關聯圖書對象,便於顯示
// Getter/Setter 省略
}
public class User {
private Integer id;
private String username;
private String password; // 加密存儲
private String email;
private String phone;
private String realName;
private Integer role; // 0: 普通用戶, 1: 管理員
private Date registerTime;
private Date lastLoginTime;
private Boolean enabled;
// Getter/Setter 省略
}
Order 聚合 OrderItem,OrderItem 關聯 Book,支援導航查詢。Double 為演示,生產環境必須改用 BigDecimal 避免浮點誤差。Order.items 為單向引用,避免序列化循環;如需雙向,配合 @JsonIgnore 或 @ToString.Exclude。@Entity, @Table, @OneToMany 等)實現 ORM 映射。@NotNull, @Size, @Email 等)聲明式校驗。Serializable 支援分布式 Session/緩存。BaseEntity 統一 id、創建時間、版本號等字段。