1. 程式人生 > >Android資料庫GreenDao配置

Android資料庫GreenDao配置

1.新增依賴

在moudle的build.gradle中新增依賴

implementation 'org.greenrobot:greendao:3.2.2'
implementation 'org.greenrobot:greendao-generator:3.2.2'

2.在專案的build.gradle中配置

buildscript {

    repositories {
        ...
        mavenCentral()
    }
    dependencies {
        ...
        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'
    }
}

3.對greendao生成檔案進行配置

greendao {
    schemaVersion 1
    daoPackage 'com.xuke.androidone.dao.gen'
    targetGenDir 'src/main/java-gen'
}

說明:

  • schemaVersion 為版本號,每次路過資料庫表發生變化時需要升級資料庫版本
  • daoPackage 檔名,一般為應用包名+生成檔名
  • targetGenDir 路徑,一般放在src/main/java-gen下面

4.建立實體類

@Entity
public class UserBean {

    private String position;
    private String birthday;
    private String alumni_id;
    private String sex;
    private String groupName;
    private String picture_xd;
    private String profession;
    @Id
    private String accountNum;
    private String phoneNum;
    private String intrestType;
    private String token;
    private String name;
    private String workUtil;
    private String pictureRT;
    private String departName;
    private String authenticated;
    private String isChangedSex;
    private String hobby;
    private String channels;
    private String refreshToken;
    private String baseInfoId;
    private String sign;
    private String picture;
    private String email;
    private String address;

}

@Entity 實體標識
@Id 每條資料對應的位置

編寫完實體類之後,Build ->Make Project(Ctrl+F9),程式就會自動編譯生成dao檔案

兩個問題:

(1)可能build完後會報錯

Error:The number of method references in a .dex file cannot exceed 64K.  

這個是android裡面對檔案的限制,如果出現這種錯誤,配置一下MultiDex就行了
在moudle的build.gradle配置

android {
    defaultConfig {
        ...
        minSdkVersion 24 
        targetSdkVersion 26
        multiDexEnabled true
    }
    ...
}


dependencies {
    //加入multidex依賴
    compile 'com.android.support:multidex:1.0.1'
}

在自定義的Application中初始化,重寫attachBaseContext.

public class MyApplication extends Application {

    ....

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(context);
        Multidex.install(this);
    }
}

(2)自動生成java-gen需要加入到專案中,自動生成的包路徑是剛才設定的src/main/java-gen

android{

    ....
    sourceSets {
        main {
            java.srcDirs = ['src/main/java', 'src/main/java-gen']
        }
    }
}

5.建立資料庫

public GreenDaoManager() {
    //建立一個數據庫,預設的 DaoMaster.DevOpenHelper 會在資料庫升級時,刪除所有的表,意味著這將導致資料的丟失。  所以,在正式的專案中,你還應該做一層封裝,來實現資料庫的安全升級。
    mySQLiteOpenHelper = new DaoMaster.DevOpenHelper(MyApplication.getInstance(), "xuke_db", null);
    //該資料庫連線屬於 DaoMaster,所以多個 Session 指的是相同的資料庫連線。
    mDaoMaster = new DaoMaster(mySQLiteOpenHelper.getWritableDatabase());
    mDaoSession = mDaoMaster.newSession();
}

6.greendao的操作(增、刪、查、改)

UserBeanDao loginUserDao = mDaoSession.getUserBeanDao();

(1).增

loginUserDao.insert(loginUser);    

(2).刪

loginUserDao.delete(loginUser); 

(3).查

loginUserDao.loadAll()  

(4).改

loginUserDao.update(loginUser);

這是最基本的幾個操作,greendao還提供了很多的方法。