美文网首页
GreenDao数据存储的使用

GreenDao数据存储的使用

作者: RoboyCore | 来源:发表于2018-07-31 15:22 被阅读253次
    • 什么是GreenDao
      一种orm数据存储,封装自SQLOpenHelper,减少表语句创建

    1、配置GreenDao插件

    1*在主目录build.gradle配置插件路径

    buildscript {
        repositories {
          jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.3'
        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'
    

    2*在工程目录运用插件并添加依赖

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

    3依赖

    dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:24.2.1'
    testCompile 'junit:junit:4.12'
    compile 'org.greenrobot:greendao:3.2.0'
    compile 'org.greenrobot:greendao-generator:3.2.0'
    

    }

    4*在工程目录android下添加greedao实体类转换自动生成路径

    android {
    compileSdkVersion 24
    buildToolsVersion "25.0.0"
    
    defaultConfig {
        applicationId "mobi.xiaowu.greendao"
        minSdkVersion 16
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
    
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    
    }
    greendao{
        schemaVersion 1//版本
        targetGenDir 'src/main/java'
        daoPackage 'mobi.xiaowu.greendao.dao'
    }
    

    2.GreenDao使用

    给实体类内容必须是基本类型,并且@Entity要声明在保存的数据类当中

    @Id 主键关键字,可以设置autoincrement
    @Transient 忽略该字段的关键字

    写完注解后重新编译下即可在配置的目录下自动生成daoMaster、daoSession、daoXXX等实体类

     DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this,"myDao.db");//通过自动生成的Master类开启Dao帮助类
        DaoMaster master = new DaoMaster(helper.getWritableDatabase());//开启数据库读取
        DaoSession daoSession = master.newSession();//使用自动生成的Session
        mDao = daoSession.getResultDao();//获取自动生成的dao实体类
    
    mDao.insert(entity);//存储实体类
    Result load = mDao.load(mList.get(position).id);//获取实体类数据
    

    1、在主目录build.gradle配置插件路径

    GreenDao注意事项

    在使用GreenDao时3.2.2版本我发现Greendao一直打印
    Didn't find class "net.sqlcipher.database.SQLiteOpenHelper”解决办法
    但是并不影响正常使用,如果你保存的数据不涉及到安全的话,完全不用理会。
    但是对我这种有强迫症的人来说,每次调试都看到打印一堆这种日志我就会很难受,所以就查阅了一些资料解决了,下面是解决办法。
    打印这些日志其实是提示我们数据库没有加密,那么,我们给数据库加密即可。

    首先引入一个第三方库:
    https://www.zetetic.net/sqlcipher/sqlcipher-for-android/

    implementation 'net.zetetic:android-database-sqlcipher:3.5.7@aar'
    

    greendao如何使用网上有很多资料了。这里我就直接用了

    在Application中初始化,获取数据库时用getEncryptedWritableDb获取即可,123为密码,密码自己随便设。

    private void initGreenDao() {
            DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "user.db", null);
            //Database dataBase1 = helper.getWritableDb();
            Database database = helper.getEncryptedWritableDb("123");
    
            daoSession=new DaoMaster(database).newSession();
        }
    

    相关文章

      网友评论

          本文标题:GreenDao数据存储的使用

          本文链接:https://www.haomeiwen.com/subject/ghqimftx.html