greenDao3.0详细使用教程

greenDao3.0详细使用教程

image

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代码

image

生成的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#

你可能感兴趣的:(greenDao3.0详细使用教程)