zoukankan      html  css  js  c++  java
  • 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:杨

  • 相关阅读:
    PHP中关于字符串的连接
    好用的FireFox(FF)插件
    Scripted Operation
    Scripted device
    chgrp chown
    wait_for_devices
    mysql create user
    mysql
    create user mysql
    Inserting/Removing shutters and filters
  • 原文地址:https://www.cnblogs.com/widgetbox/p/12397559.html
Copyright © 2011-2022 走看看