android中简单便捷使用GreenDao本地数据库及采坑之路

  

在开发过程中,有时候我们需要使用SQLite数据库去本地存储一些临时文件,之前,我们的做法是通过SQLiteOpenHelper实现创建数据库,以及迭代开发中的数据库数据 内容 字段 变更时处理。
 

优点

1.通常我们在使用GreenDao的时候,我们只需定义数据模型,GreenDao框架将创建数据对象(实体)和DAO(数据访问对象),能够节省部分代码。
2.不向性能妥协,使用了GreenDao,大多数实体可以以每秒几千个实体的速率进行插入,更新和加载。
3.GreenDao支持加密数据库来保护敏感数据。
4.微小的依赖库,GreenDao的关键依赖库大小不超过100kb.
5.如果需要,实体是可以被激活的。而活动实体可以透明的解析关系(我们要做的只是调用getter即可),并且有更新、删除和刷新方法,以便访问持久性功能。
6.GreenDao允许您将协议缓冲区(protobuf)对象直接保存到数据库中。如果您通过protobuf通话到您的服务器,则不需要另一个映射。常规实体的所有持久性操作都可以用于protobuf对象。所以,相信这是GreenDao的独特之处。
7.自动生成代码,我们无需关注实体类以及Dao,因为GreenDao已经帮我们生成了。

 

GreenDao使用

1.在工程目录下build.gradle下添加插件

buildscript { 
    
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath ‘com.android.tools.build:gradle:3.1.2‘
        classpath ‘org.greenrobot:greendao-gradle-plugin:3.2.2‘ // 添加插件 更好支持GreenDao

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

  

然后Sync Now即可。

2.在项目目录下的build.gradle下添加插件依赖

apply plugin: ‘com.android.application‘
apply plugin: ‘org.greenrobot.greendao‘

  接下来继续添加依赖库

dependencies {
    implementation fileTree(dir: ‘libs‘, include: [‘*.jar‘])
    implementation ‘com.android.support:appcompat-v7:28.0.0-rc01‘
    implementation ‘com.android.support.constraint:constraint-layout:1.1.2‘
    testImplementation ‘junit:junit:4.12‘
    androidTestImplementation ‘com.android.support.test:runner:1.0.2‘
    androidTestImplementation ‘com.android.support.test.espresso:espresso-core:3.0.2‘
    implementation ‘org.greenrobot:greendao:3.2.2‘ // 添加库
}

  

再接下来就是初始化GreenDao配置,在app下的build.gradle目录下

greendao {
        schemaVersion 1 //当前数据库版本
    }

  到这里为止,GreenDao的基本配置就差不多完成了。

 

采坑之路:

 

      之前开发中遇到订单ID 与  @Index(unique = true)//设置唯一性

框架中唯一性的值有冲突,导致长链接中断的问题,开发过程中要注意,此性质类似于主键ID,但不等同于主键。

 

By:杨

android中简单便捷使用GreenDao本地数据库及采坑之路

上一篇:C#~使用FileSystemWatcher来监视文件系统的变化


下一篇:nested exception is java.lang.NoClassDefFoundError: Could not initialize class org.springframework.http.converter.json.MappingJackson2HttpMessageConverter