• 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:杨

  • 相关阅读:
    vs2022 搭建NET6 WebApi 接口项目《五》 接口访问限流配置
    vs2022 搭建NET6 WebApi 接口项目《二》 配置swagger
    vs2022 搭建NET6 WebApi 接口项目《一》 整体项目搭建
    vs2022 搭建NET6 WebApi 接口项目《六》 返回参数配置
    vs2022 搭建NET6 WebApi 接口项目《三》 配置跨域
    Docker 在mac上的使用
    构建煤矿物联网大数据平台思路(1)
    构建煤矿物联网大数据平台思路(2)实时数据库与时序数据库
    Redis 只能通过127.0.0.1访问,磁盘在使用中等问题...
    git 提交忽略bin obj等文件
  • 原文地址:https://www.cnblogs.com/widgetbox/p/12397559.html
Copyright © 2020-2023  润新知