greenDao3.0详细使用教程
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,您需要创建一个表示应用程序中持久数据的实体模型。然后,基于此模型,greenDAO为DAO类生成Java代码。
您无需任何其他配置即可开始使用greenDAO Gradle插件。但是,您应该考虑至少设置架构版本:
配置greendao基本信息
主要有以下参数:
schemaVersion:数据库模式的当前版本。这是使用的 * OpenHelpers类模式版本之间迁移。如果更改实体/数据库架构,则必须增加此值。默认为1。
daoPackage:生成的DAO,DaoMaster和DaoSession的包名。 默认为源实体类的包名称。
targetGenDir:应存储生成的源的位置。 默认为构建目录( build / generated / source / greendao)中生成的源文件夹。
generateTests: 设置为true以自动生成单元测试。
targetGenDirTests: 应存储生成的单元测试的基本目录。默认为 src / androidTest / java
在moudle的build.gradle中添加:
android{
greendao{
//指定数据库schema版本号,迁移等操作会用到;
schemaVersion 1
//dao的包名,包名默认是entity所在的包;
daoPackage 'com.greendao.gen'
//生成数据库文件的目录
targetGenDir 'src/main/java'
}
}
定义实体类
@Entity
public class User {
//定于主键
@Id(autoincrement = true)
private Long id;
//定于此字段在数据库列的别名,如果不定义,会默认定义为CUSTOM_NAME
@Property(nameInDb = "USERNAME")
private String customName;
//使该属性成为数据库端的“NOT NULL”列
@NotNull
private int repos;
@Transient
private int tempUsageCount;
//@Index为相应的数据库列创建数据库索引。使用以下参数进行自定义:
//name:如果你不喜欢greenDAO为索引生成的默认名称,你可以在这里指定你的名字。
//unique:向索引添加UNIQUE约束,强制所有值都是唯一的
@Index(unique = true,name="年龄")
private String age;
...
}
定义完实体类后,通过AndroidStudio build/Make Project为Dao类生产java代码
生成的java类有3个:
- DaoMaster.java
- DaoSession.java
- UserDao.java
DaoMaster 用于数据库连接,通过创建DaoMaster对象获取DaoSession
daoMaster = new DaoMaster(db);
daoSession = daoMaster.newSession();
DaoSession 身份范围和会话“缓存”,管理实体类的Dao类
userDao = daoSession.getUserDao();
userDao.detachAll();
UserDao 操作数据库增删改查的类
混淆
#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#