天天看點

Android資料庫GreenDao的使用Android資料庫GreenDao

Android資料庫GreenDao

項目代碼

參考自

項目配置

1、項目目錄下

.gradle

檔案配置:

buildscript {
    repositories {
        google()
        jcenter()
        // GreenDao倉庫
        mavenCentral()
    }
    dependencies {
        // ....
        // GreenDao插件
        classpath 'org.greenrobot:greendao-gradle-plugin:3.3.0'
    }
}
           

2、app目錄下

.gradle

配置

apply plugin: 'com.android.application'
//GreenDao插件
apply plugin: 'org.greenrobot.greendao'
           
dependencies {
    implementation 'org.greenrobot:greendao:3.3.0'   //GreenDao依賴添加
}
           
greendao {
    // 資料庫版本号,注意更新
    schemaVersion 1
    // 生成資料庫檔案的目錄
    // targetGenDir 'src/main/java'
    // 生成的資料庫相關檔案的包名
    // daoPackage 'com.nianlun.greendao.gen'
}
           

使用說明

1、首先建立使用者實體類,如下:

@Entity
public class User {

	@Id(autoincrement = true)//設定自增長
	private Long id;

	@Index(unique = true)//設定唯一性
	private String perNo;

	private String name;

	private String sex;
}
           

實體類中詳細注解說明:

  • @Entity:表明這個實體類會在資料庫中生成一個與之相對應的表,其中可配置項:

    nameInDb:可以自定義表名,表明該實體對應資料庫中的那張表,預設為實體類名;

    indexes:定義索引,這裡可跨越多個列;

    createInDb:如果是有多個實體都關聯這個表,可以把多餘的實體裡面設定為false避免重複建立(預設是true);

    schema:一個項目中有多個schema時,表明要讓這個dao屬于哪個schema;

    active:是否應該生成更新/删除/重新整理方法。如果Entity定義了 @ToOne 或 @ToMany關系,那麼獨立于該值是有效的。意為是否支援實體類之間update,refresh,delete等操作。

  • @Id:對應資料表中的主鍵,是一條資料的唯一辨別。如果實體沒有聲明主鍵,預設建立Long類型主鍵"_id"自增。使用Long類型主鍵時可以通過@Id(autoincrement = true)設定為自增。
  • @Property(nameInDb = “USER_NAME” ):可以自定義字段名,注意外鍵不能使用該屬性。表明這個屬性對應資料表中的 USER_NAME 字段。
  • @NotNull:該屬性值不能為空。
  • @Transient:該屬性不會被存入資料庫中。
  • @Unique:表明該屬性在資料庫中隻能有唯一值。
  • @Index:建立一個索引。通過name設定索引别名,也可以通過unique給索引添加限制。
  • @Convert:指定一個PropertyConverter用于支援自定義類型(沒用過)。
  • @ToOne:定義自己與一個實體對象的關系。
  • @ToMany:定義自己與多個實體對象的關系(可不與@ToOne聯合使用)。@ToMany的屬性referencedJoinProperty,類似于外鍵限制。
  • @JoinProperty:對于更複雜的關系,可以使用這個注解标明目标屬性的源屬性,起關聯作用。
  • @JoinEntity:如果你在做多對多的關系,有其他的表或實體參與,可以給目标屬性添加這個額外的注解。
  • @OrderBy:指定{@ToMany}關系的相關集合的排序,(propertyA, propertyB)預設為按主鍵ASC排序。
  • @Generated:這個是build後greendao自動生成的,這個注解了解為防止重複,每一塊代碼生成後會加個hash作為标記。

2、實體類建完畢後,點選Android Studio中的

Make Project

GreenDao

會自己為User實體類生成了對應的

Getter

Setter

方法以及兩個構造函數,同時在我們配置的

com.example.greendaodemo.bean

包下生成了三個對應類檔案

DaoMaster

DaoSession

UserDao

,之後所有相關的資料庫操作都依靠這三個檔案了:

  • DaoMaster:使用greenDAO的切入點。DaoMaster儲存資料庫對象(SQLiteDatabase)并管理特定模式的DAO類(而不是對象)。 它具有靜态方法來建立表或将它們删除。 其内部類OpenHelper和DevOpenHelper是在SQLite資料庫中建立模式的SQLiteOpenHelper實作。一個DaoMaster就代表着一個資料庫的連接配接;
  • DaoSession:管理特定模式的所有可用DAO對象,您可以使用其中一個getter方法擷取。 DaoSession還為實體提供了一些通用的持久性方法,如插入,加載,更新,重新整理和删除。 DaoSession可以讓我們使用一些Entity的基本操作和擷取Dao操作類,DaoSession可以建立多個,每一個都是屬于同一個資料庫連接配接的;
  • XxDAO:資料通路對象(DAO)持續存在并查詢實體。 對于每個實體,GreenDAO生成一個DAO。 它比DaoSession有更多的持久化方法,例如:count,loadAll和insertInTx等。

3、資料庫操作

(1)編寫

DaoManager

,用于建立資料庫、建立資料庫表、包含增删改查的操作。

(2)編寫

CommonDaoUtils

,用于完成對資料表的操作。

(3)編寫

DaoUtilsStore

,用于存放及提取

DaoUtils

(4)調用

DaoUtilsStore

,進行資料操作及檢視。

代碼詳見