- @Entity -- 實體注解
public @interface Entity {
/**
* 在資料庫中表的名稱,預設為實體的類名
*/
String nameInDb() default "";
/**
* 定義索引,可以跨越多個列(預設為實體類成員變量的個數)
*/
Index[] indexes() default {};
/**
* 标記建立資料庫表
* 若一個表映射多個實體類或者建立表外應的GreenDao,設定為false
*/
boolean createInDb() default true;
/**
* 告知GreenDao目前實體屬于哪個schema
*/
String schema() default "default";
/**
* 實體活動狀體标志位(預設為false)
* 若設定為true,實體有更新、删除和重新整理方法
*/
boolean active() default false;
}
- @NotNull-- 設定表中目前列的值不可為空
- @Convert-- 指定自定義類型(@link PropertyConverter)
public @interface Convert {
/** 轉換類*/
Class<? extends PropertyConverter> converter();
/**
* 在資料庫中持久化的列
* 此受限于GreenDao所支援的類
*/
Class columnType();
}
- @Generated-- GreenDao運作所産生的構造函數或者方法,被此标注的代碼可以變更或者下次運作時清除
public @interface Generated {
int hash() default -1;
}
- @Id-- 主鍵 Long型,可以通過@Id(autoincrement = true)設定自增長。通過這個注解标記的字段必須是Long,資料庫中表示它就是主鍵,并且預設是自增的。
public @interface Id {
/**
* 設定是否為自增長,預設為false
*/
boolean autoincrement() default false;
}
- @Index-- 使用@Index作為一個屬性來建立一個索引;定義多列索引(@link Entity#indexes())
public @interface Index {
/**
* 通過逗号間隔建立表的屬性索引,例如 “propertyA,propertyB,propertyC”
* 若要指定排序, 需在列明以後添加 ASC(升序) 或者DESC(降序) , 例如 "propertyA DESC, propertyB ASC"
* 隻有實體類中使用 {@link Entity#indexes()} 才可設定
*/
String value() default "";
/**
* 表的可選索引
* 預設為實體類中的成員變量
*/
String name() default "";
/**
* 是否為屬性設定唯一屬性,預設為false
*/
boolean unique() default false;
}
- @JoinEntity-- 定義表連接配接關系
public @interface JoinEntity {
/** 添加的實體類 */
Class<?> entity();
/** 源表的列索引 */
String sourceProperty();
/** 連接配接表内擁有源實體的屬性*/
String targetProperty();
}
- @JoinProperty-- 定義名稱和引用名稱屬性關系
public @interface JoinProperty {
/** 實體中的名稱,對應于引用的名稱 */
String name();
/** 引用的名稱 */
String referencedName();
}
-
@Keep-- 注解的代碼段在GreenDao下次運作時保持不變
1.注解實體類:預設禁止修改此類
2.注解其他代碼段,預設禁止修改注解的代碼段
- @OrderBy-- 指定排序
public @interface OrderBy {
/**
* 通過逗号間隔建立表的屬性索引,例如 “propertyA,propertyB,propertyC”
* 若要指定排序, 需在列明以後添加 ASC(升序) 或者DESC(降序) , 例如 "propertyA DESC, propertyB ASC"
* 預設按升序排序
* 若不設定預設根據主鍵排序
*/
String value() default "";
}
- @Property-- 設定一個非預設關系映射所對應的列名,預設是的使用字段名 舉例:@Property (nameInDb="name")
public @interface Property {
/**
* 預設是的使用字段名
*/
String nameInDb() default "";
}
- @ToMany-- 定義與多個實體對象的關系
public @interface ToMany {
/**
* 目标實體持有源實體的名稱
* 此必須設定,否則有 {@link JoinProperty} or {@link JoinEntity} 指定
*/
String referencedJoinProperty() default "";
/**
* 将源表列索引->目标列
* 此必須設定,否則有 {@link JoinProperty} or {@link JoinEntity} 指定
*/
JoinProperty[] joinProperties() default {};
}
- @ToOne-- 定義與另一個實體(一個實體對象)的關系
public @interface ToOne {
/**
* 表中相關實體的屬性名稱
* 如果該參數不存在,則附加列會自動建立儲存密鑰
*/
String joinProperty() default "";
}
- @Transient-- 添加次标記之後不會生成資料庫表的列
- @Unique-- 向資料庫列添加了一個唯一的限制