greenDao3.0詳細(xì)使用教程
greenDao官方文檔:
http://greenrobot.org/greendao/documentation/
greenDao Github地址:
https://github.com/greenrobot/greenDAO
將greenDao添加到項目中
在根build.gradle文件中添加:
// In your root build.gradle file:
buildscript {
repositories {
jcenter()
mavenCentral() // add repository
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.1'
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // 添加此行代碼
}
}
在moudle的build.gradle中添加:
// In your app projects build.gradle file:
apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao' // 添加此行代碼
dependencies {
implementation 'org.greenrobot:greendao:3.2.2' // 添加greendao依賴
}
基本使用
要在項目中使用greenDAO颁独,您需要創(chuàng)建一個表示應(yīng)用程序中持久數(shù)據(jù)的實體模型祝懂。然后大脉,基于此模型鳖孤,greenDAO為DAO類生成Java代碼杀怠。
您無需任何其他配置即可開始使用greenDAO Gradle插件者冤。但是梳毙,您應(yīng)該考慮至少設(shè)置架構(gòu)版本:
配置greendao基本信息
主要有以下參數(shù):
schemaVersion:數(shù)據(jù)庫模式的當(dāng)前版本。這是使用的 * OpenHelpers類模式版本之間遷移奥此。如果更改實體/數(shù)據(jù)庫架構(gòu),則必須增加此值雁比。默認(rèn)為1稚虎。
daoPackage:生成的DAO,DaoMaster和DaoSession的包名偎捎。 默認(rèn)為源實體類的包名稱蠢终。
targetGenDir:應(yīng)存儲生成的源的位置。 默認(rèn)為構(gòu)建目錄( build / generated / source / greendao)中生成的源文件夾茴她。
generateTests: 設(shè)置為true以自動生成單元測試寻拂。
targetGenDirTests: 應(yīng)存儲生成的單元測試的基本目錄。默認(rèn)為 src / androidTest / java
在moudle的build.gradle中添加:
android{
greendao{
//指定數(shù)據(jù)庫schema版本號败京,遷移等操作會用到;
schemaVersion 1
//dao的包名兜喻,包名默認(rèn)是entity所在的包;
daoPackage 'com.greendao.gen'
//生成數(shù)據(jù)庫文件的目錄
targetGenDir 'src/main/java'
}
}
定義實體類
@Entity
public class User {
//定于主鍵
@Id(autoincrement = true)
private Long id;
//定于此字段在數(shù)據(jù)庫列的別名赡麦,如果不定義朴皆,會默認(rèn)定義為CUSTOM_NAME
@Property(nameInDb = "USERNAME")
private String customName;
//使該屬性成為數(shù)據(jù)庫端的“NOT NULL”列
@NotNull
private int repos;
@Transient
private int tempUsageCount;
//@Index為相應(yīng)的數(shù)據(jù)庫列創(chuàng)建數(shù)據(jù)庫索引。使用以下參數(shù)進(jìn)行自定義:
//name:如果你不喜歡greenDAO為索引生成的默認(rèn)名稱泛粹,你可以在這里指定你的名字遂铡。
//unique:向索引添加UNIQUE約束,強制所有值都是唯一的
@Index(unique = true,name="年齡")
private String age;
...
}
定義完實體類后晶姊,通過AndroidStudio build/Make Project為Dao類生產(chǎn)java代碼
生成的java類有3個:
- DaoMaster.java
- DaoSession.java
- UserDao.java
DaoMaster 用于數(shù)據(jù)庫連接扒接,通過創(chuàng)建DaoMaster對象獲取DaoSession
daoMaster = new DaoMaster(db);
daoSession = daoMaster.newSession();
DaoSession 身份范圍和會話“緩存”,管理實體類的Dao類
userDao = daoSession.getUserDao();
userDao.detachAll();
UserDao 操作數(shù)據(jù)庫增刪改查的類
混淆
#greendao start#
-keep class org.greenrobot.greendao.**{*;}
-keep public interface org.greenrobot.greendao.**
-keepclassmembers class * extends org.greenrobot.greendao.AbstractDao {
public static java.lang.String TABLENAME;
}
-keep class **$Properties
-keep class net.sqlcipher.database.**{*;}
-keep public interface net.sqlcipher.database.**
-dontwarn net.sqlcipher.database.**
-dontwarn org.greenrobot.greendao.**
#greendao end#