SpringBoot PO VO BO POJO实战指南
基于Spring Boot的PO(持久化对象)
以下是一些基于Spring Boot的PO(持久化对象)实例示例,涵盖不同场景和功能:
基础PO类示例
@Entity
@Table(name = "users")
public class User {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;private String username;private String email;
}
@Entity
@Table(name = "products")
public class Product {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;private String name;private BigDecimal price;
}
关联关系示例
@Entity
@Table(name = "orders")
public class Order {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;@ManyToOne@JoinColumn(name = "user_id")private User user;
}
@Entity
@Table(name = "order_items")
public class OrderItem {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;@ManyToOne@JoinColumn(name = "order_id")private Order order;@ManyToOne@JoinColumn(name = "product_id")private Product product;
}
继承关系示例
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "vehicle_type")
public abstract class Vehicle {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;private String manufacturer;
}
@Entity
@DiscriminatorValue("CAR")
public class Car extends Vehicle {private int numberOfDoors;
}
复杂类型处理
@Entity
public class Employee {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;@Embeddedprivate Address address;
}
@Embeddable
public class Address {private String street;private String city;private String zipCode;
}
审计字段示例
@Entity
@EntityListeners(AuditingEntityListener.class)
public class Document {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;@CreatedDateprivate LocalDateTime createdAt;@LastModifiedDateprivate LocalDateTime updatedAt;
}
枚举类型处理
@Entity
public class Order {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;@Enumerated(EnumType.STRING)private OrderStatus status;
}public enum OrderStatus {PENDING, PROCESSING, COMPLETED, CANCELLED
}
集合类型处理
@Entity
public class Student {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;@ElementCollection@CollectionTable(name = "student_phone_numbers", joinColumns = @JoinColumn(name = "student_id"))private Set<String> phoneNumbers = new HashSet<>();
}
JSON类型处理
@Entity
public class Product {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;@Column(columnDefinition = "json")private String specifications;
}
多租户示例
@Entity
public class TenantAwareEntity {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;@Column(name = "tenant_id")private String tenantId;
}
软删除示例
@Entity
public class Customer {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;@Column(name = "is_deleted")private boolean deleted;
}
版本控制示例
@Entity
public class BankAccount {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;@Versionprivate Long version;
}
自定义ID生成器
@Entity
public class Invoice {@Id@GeneratedValue(generator = "uuid")@GenericGenerator(name = "uuid", strategy = "uuid2")private String id;
}
时间处理
@Entity
public class Event {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;@Temporal(TemporalType.TIMESTAMP)private Date startTime;
}
大对象处理
@Entity
public class Document {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;@Lobprivate byte[] content;
}
索引示例
@Entity
@Table(name = "employees", indexes = @Index(columnList = "department_id"))
public class Employee {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;private Long