上一章 Day 16 - MySQL 使用Spring Boot 自動建立Table設定
今天要教大家如何用Annontation指令欄位格式與型別
首先打開Member.java, 新增以下參數
@Data
@NoArgsConstructor
@RequiredArgsConstructor
@Entity
@Table(name = "members")
public class Member {
@Id
@Column(name = "mid", unique = true, nullable = false, length = 50)
private String mid;
@NonNull
@NotEmpty
@Column(name = "email", unique = true, nullable = false, length = 50)
private String email;
@NonNull
@NotEmpty
@Column(name = "password", nullable = false, length = 50)
private String password;
@NonNull
@NotEmpty
@Column(name = "first_name", nullable = false, length = 50)
private String firstName;
@NonNull
@NotEmpty
@Column(name = "last_name", nullable = false, length = 50)
private String lastName;
@Column(name = "create_time")
private Date createTime;
@Column(name = "update_time")
private Date updateTime;
}
@Table(name = "members")
這是指定我們的Table名稱, member是MySQL保留字元, 我們使用members
@Id
這是指定Primary Key
@Column(name = "email", unique = true, nullable = false, length = 50)
這是指定欄位
name: 名稱
unique: 唯一性
nullable: 是否可為空
length: 長度
還有許多常用的例如:
@JoinColumn: 當Table中需要與另一個表關聯, 也就是所謂的Foreign Key
@GeneratedValue: 常用的strategy有兩種
IDENTITY: 由資料庫自動產生
AUTO: 由hibernate自動產生, 此種方法會跨table共用, 例: A表產生index 1, 2, 3, 之後B表則從4開始, 以此類推
新增完後, 現在執行我們的專案, 就可以看到MySQL mydb底下出現了我們要的Table
若需要改格式, 欄位大小, 都只要在程式上稍微調整即可
不僅淺顯易懂, 使用上也非常方便。
下一章 Day 18 - MySQL 使用Annontation設定欄位 (2)
由官方網站的寫法, AUTO
應該是 persistence provider (像是 Hibernate
) 選擇一種產生 id 的方式。據一些網站的說法,有一種方式是選 SEQUENCE
(allocationSize = 1),也就是大大寫的 hibernate_sequence table 方式。AUTO
也可以設 id 為 UUID 形式
這是我在網路上看到比較簡單的4種說法