天天看點

Android GreenDao常用注解

  1. @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;
  }
           
  1. @NotNull-- 設定表中目前列的值不可為空
  2. @Convert-- 指定自定義類型(@link PropertyConverter)
public @interface Convert {  
    /** 轉換類*/  
    Class<? extends PropertyConverter> converter();  
  
    /** 
     * 在資料庫中持久化的列 
     * 此受限于GreenDao所支援的類 
     */  
    Class columnType();  
}  
           
  1. @Generated-- GreenDao運作所産生的構造函數或者方法,被此标注的代碼可以變更或者下次運作時清除
public @interface Generated {  
    int hash() default -1;  
}
           
  1. @Id-- 主鍵 Long型,可以通過@Id(autoincrement = true)設定自增長。通過這個注解标記的字段必須是Long,資料庫中表示它就是主鍵,并且預設是自增的。
public @interface Id {  
    /** 
      * 設定是否為自增長,預設為false 
      */  
    boolean autoincrement() default false;  
} 
           
  1. @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;  
}  
           
  1. @JoinEntity-- 定義表連接配接關系
public @interface JoinEntity {  
    /** 添加的實體類 */  
    Class<?> entity();  
  
    /** 源表的列索引 */  
    String sourceProperty();  
  
    /** 連接配接表内擁有源實體的屬性*/  
    String targetProperty();  
}
           
  1. @JoinProperty-- 定義名稱和引用名稱屬性關系
public @interface JoinProperty {  
    /** 實體中的名稱,對應于引用的名稱 */  
    String name();  
  
    /** 引用的名稱 */  
    String referencedName();  
}
           
  1. @Keep-- 注解的代碼段在GreenDao下次運作時保持不變

    1.注解實體類:預設禁止修改此類

    2.注解其他代碼段,預設禁止修改注解的代碼段

  2. @OrderBy-- 指定排序
public @interface OrderBy {  
    /** 
     * 通過逗号間隔建立表的屬性索引,例如 “propertyA,propertyB,propertyC” 
     * 若要指定排序, 需在列明以後添加 ASC(升序) 或者DESC(降序) ,  例如 "propertyA DESC, propertyB ASC" 
     *  預設按升序排序 
     *  若不設定預設根據主鍵排序 
     */  
    String value() default "";  
} 
           
  1. @Property-- 設定一個非預設關系映射所對應的列名,預設是的使用字段名 舉例:@Property (nameInDb="name")
public @interface Property {  
    /** 
     * 預設是的使用字段名 
     */  
    String nameInDb() default "";  
}  
           
  1. @ToMany-- 定義與多個實體對象的關系
public @interface ToMany {  
    /** 
     * 目标實體持有源實體的名稱 
     * 此必須設定,否則有 {@link JoinProperty} or {@link JoinEntity} 指定 
     */  
    String referencedJoinProperty() default "";  
  
    /** 
     * 将源表列索引->目标列 
     * 此必須設定,否則有 {@link JoinProperty} or {@link JoinEntity} 指定 
     */  
    JoinProperty[] joinProperties() default {};  
} 
           
  1. @ToOne-- 定義與另一個實體(一個實體對象)的關系
public @interface ToOne {  
    /** 
     * 表中相關實體的屬性名稱 
     * 如果該參數不存在,則附加列會自動建立儲存密鑰 
     */  
    String joinProperty() default "";  
} 
           
  1. @Transient-- 添加次标記之後不會生成資料庫表的列
  2. @Unique-- 向資料庫列添加了一個唯一的限制