diff --git a/src/main/java/com/webgame/webgamebackend/entities/AccountEntity.java b/src/main/java/com/webgame/webgamebackend/entities/AccountEntity.java new file mode 100644 index 0000000..c4e91d3 --- /dev/null +++ b/src/main/java/com/webgame/webgamebackend/entities/AccountEntity.java @@ -0,0 +1,47 @@ +package com.webgame.webgamebackend.entities; + +import com.webgame.webgamebackend.entities.base.UUIDBaseEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.experimental.Accessors; + +/** + * 账号实体 + */ +@Entity +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Accessors(chain = true) +@Table(name = "account") // 映射的表名 +public class AccountEntity extends UUIDBaseEntity { + /** + * 用户名 + */ + @Column(name = "username", unique = true, length = 32) + private String username; + + /** + * 密码 + */ + @Column(name = "password", nullable = false) + private String password; + + /** + * 邮箱 + */ + @Column(name = "email", unique = true, length = 254) + private String email; + + /** + * 手机号码 + */ + @Column(name = "phone", unique = true, length = 11) + private String phone; +} diff --git a/src/main/java/com/webgame/webgamebackend/entities/base/BaseEntity.java b/src/main/java/com/webgame/webgamebackend/entities/base/BaseEntity.java new file mode 100644 index 0000000..6d5f2a5 --- /dev/null +++ b/src/main/java/com/webgame/webgamebackend/entities/base/BaseEntity.java @@ -0,0 +1,56 @@ +package com.webgame.webgamebackend.entities.base; + +import jakarta.persistence.Column; +import jakarta.persistence.MappedSuperclass; +import jakarta.persistence.PrePersist; +import jakarta.persistence.PreUpdate; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; +import lombok.extern.slf4j.Slf4j; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 基础实体 + */ +@Getter +@Setter +@Accessors(chain = true) // 允许链式调用 +@MappedSuperclass // 表示该类不会映射到数据库表 +public abstract class BaseEntity implements Serializable { + /** + * 创建时间 + */ + @Column(name = "create_time") + protected LocalDateTime createTime; + /** + * 更新时间 + */ + @Column(name = "update_time") + protected LocalDateTime updateTime; + + @PrePersist + private void preEntityCreateTime() { + this.createTime = LocalDateTime.now(); + } + + @PreUpdate + private void preEntityUpdateTime() { + this.updateTime = LocalDateTime.now(); + } +} + + +/** + * pre 插入数据库前,可以影响插入数据 + * post 插入数据库后,已完成插入,无法再改变字段值 + * @PrePersist:在实体被持久化之前调用。 + * @PreRemove:在实体被删除之前调用。 + * @PostPersist:在实体被持久化之后调用。 + * @PostRemove:在实体被删除之后调用。 + * @PostLoad:在实体被加载到持久化上下文后调用。 + * @PreUpdate:在实体更新之前调用。 + * @PostUpdate:在实体更新之后调用。 + */ diff --git a/src/main/java/com/webgame/webgamebackend/entities/base/UUIDBaseEntity.java b/src/main/java/com/webgame/webgamebackend/entities/base/UUIDBaseEntity.java new file mode 100644 index 0000000..ccc5cb4 --- /dev/null +++ b/src/main/java/com/webgame/webgamebackend/entities/base/UUIDBaseEntity.java @@ -0,0 +1,27 @@ +package com.webgame.webgamebackend.entities.base; + +import jakarta.persistence.*; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 基础实体类,继承该类,则该类将具有String类型的uuid + */ +@Getter +@Setter +@Accessors(chain = true) +@MappedSuperclass +public abstract class UUIDBaseEntity extends BaseEntity implements Serializable { + /** + * 主键,uuid + */ + @Id + @Column(name = "id", unique = true, length = 64) + @GeneratedValue(strategy = GenerationType.UUID) + protected String id; +} +