feat: 数据库实体基础
This commit is contained in:
@@ -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;
|
||||
}
|
||||
@@ -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:在实体更新之后调用。
|
||||
*/
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user