1.1@Table 注解 注解
作用:建立實體類和數據庫表之間的對應關系。
默認規則:實體類類名首字母小寫作為表名。Employee 類→employee 表。
用法:在@Table 注解的 name 屬性中指定目標數據庫表的表名
1.2@Column 注解 注解
作用:建立實體類字段和數據庫表字段之間的對應關系。
默認規則:
實體類字段:駝峰式命名
數據庫表字段:使用“_”區分各個單詞
用法:在@Column 注解的 name 屬性中指定目標字段的字段名 用來解決和數據庫字段不對應的情況 @Column (" 數據庫實際字段名 ")
1.3@Id 注解 注解
通用 Mapper 在執行 xxxByPrimaryKey(key)方法時,有兩種情況。
情況 1:沒有使用@Id 注解明確指定主鍵字段
SELECT emp_id,emp_name,emp_salary_apple,emp_age FROM tabple_emp WHERE emp_id = ?
AND emp_name = ? AND emp_salary_apple = ? AND emp_age = ?
之所以會生成上面這樣的 WHERE 子句是因為通用 Mapper 將實體類中的所有
字段都拿來放在一起作為聯合主鍵。
情況 2:使用@Id 主鍵明確標記和數據庫表中主鍵字段對應的實體類字段
1.4@GeneratedValue 注解 注解
作用:讓通用 Mapper 在執行 insert 操作之后將數據庫自動生成的主鍵值回寫到實
體類對象中。
自增主鍵用法:
序列主鍵用法:
應用場景:購物車結賬
增加商品銷量...
減少商品庫存...
生成訂單數據→封裝到 Order 對象中→保存 Order 對象→數據庫自動生成主鍵
值→回寫到實體類對象 Order 中
生成一系列訂單詳情數據→List<OrderItem>→在每一個 OrderItem 中設置
Order 對象的主鍵值作為外鍵→批量保存 List<OrderItem>
@GeneratedValue(strategy = GenerationType.IDENTITY)
- 根據底層數據庫自動選擇方式,需要底層數據庫的設置
- 如MySQL,會使用自增字段,需要將主鍵設置成auto_increment。
1.5@Transient 主鍵 主鍵
用於標記不與數據庫表字段對應的實體類字段。
@Transient
private String otherThings; //非數據庫表中字段