這里簡單記錄常用的注解,詳情需要去官網學習!!
1、@TableName 用於定義表名
2、@TableId 用於定義表的主鍵
屬性:
value 用於定義主鍵字段名
type 用於定義主鍵類型(主鍵策略 IdType)
主鍵策略:
IdType.AUTO 主鍵自增,系統分配,不需要手動輸入,但需要設置 mysql auto_increment IdType.NONE 未設置主鍵 IdType.INPUT 需要自己輸入 主鍵值 IdType.ASSIGN_ID 系統分配 ID,用於數值型數據(Long,對應 mysql 中 BIGINT 類型) IdType.ASSIGN_UUID 系統分配 UUID,用於字符串型數據(String,對應 mysql 中 varchar(32) 類型)
3、@TableField 用於定義表的非主鍵字段
屬性:
value 用於定義非主鍵字段名,用於別名匹配,假如java對象屬性和數據庫屬性不一樣 exist 用於指明是否為數據表的字段, true 表示是,false 為不是,假如某個java屬性在數據庫沒對應的字段則要標記為faslse
fill 用於指定字段填充策略(FieldFill,用的不多)
字段填充策略:一般用於填充 創建時間、修改時間等字段
FieldFill.DEFAULT 默認不填充
FieldFill.INSERT 插入時填充
FieldFill.UPDATE 更新時填充
FieldFill.INSERT_UPDATE 插入、更新時填充。
注意,在使用 fill 字段填充策略時,需要實現處理才能生效,如下:
/** * 將MybatisObjectHandler注入spring容器中,操作數據添加或者修改時,自動給 * 指定字段添加數據 */ @Component public class MybatisObjectHandler implements MetaObjectHandler {
// birthday 指定的字段名稱,表示在insert場合可以操作該方法 @Override public void insertFill(MetaObject metaObject) { setFieldValByName("birthday", new Date(),metaObject); } @Override public void updateFill(MetaObject metaObject) { setFieldValByName("updateTime",new Date(),metaObject); } }
4、案列
@Data @TableName("Test3") public class Test3 { /** * IdType.AUTO 主鍵自增,不需要手動輸入,但需要設置mysql auto_increment */ @TableId(value = "id",type = IdType.AUTO) private Integer id; @TableField(value = "name") private String name; /** * 某個java屬性在數據庫沒對應的字段則要標記為faslse,默認是true */ @TableField(exist = false) private String address; /** * 插入時填充, 添加日期 */ @TableField(value = "birthday", fill = FieldFill.INSERT ) private Date birthday; }