Android GreenDao使用和數(shù)據(jù)庫遷移詳解

1、GreenDao 介紹:

  • greenDAO是一個對象關(guān)系映射(ORM)的框架,能夠提供一個接口通過操作對象的方式去操作關(guān)系型數(shù)據(jù)庫,它能夠讓你操作數(shù)據(jù)庫時更簡單、更方便。如下圖所示:
image

先放Demo,Demo地址戳這里??

2、GreenDao 優(yōu)點:

  • 性能高,號稱Android最快的關(guān)系型數(shù)據(jù)庫

  • 內(nèi)存占用小

    • 庫文件比較小,小于100K,編譯時間低,而且可以避免65K方法限制
  • 支持?jǐn)?shù)據(jù)庫加密 greendao支持SQLCipher進(jìn)行數(shù)據(jù)庫加密 有關(guān)SQLCipher可以參考這篇博客Android數(shù)據(jù)存儲之Sqlite采用SQLCipher數(shù)據(jù)庫加密實戰(zhàn)

  • 簡潔易用的API

3、在build.grade中配置插件信息并引入依賴包

// In your root build.gradle file: 設(shè)置腳本的運行環(huán)境(如果用在app啟動模塊,直接加3,4步,在lib模塊整個需要加進(jìn)去)
buildscript {
    repositories {
        jcenter()
        mavenCentral() // add repository 支持java 依賴庫管理(maven/ivy),用于項目的依賴。
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.3'
        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin 依賴包的定義。支持maven/ivy,遠(yuǎn)程,本地庫,也支持單文件
    }
}
 
// In your app projects build.gradle file:
apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao' // apply plugin  聲明添加的插件類型
 
dependencies {
    compile 'org.greenrobot:greendao:3.2.2' // add library
}
//自定義Greendao版本和生成路徑
greendao {
    //數(shù)據(jù)庫版本號,數(shù)據(jù)庫修改后這里一定要記得修改,否則會報錯no such table
    schemaVersion 1
    //通過gradle插件生成的數(shù)據(jù)庫相關(guān)文件的包名,默認(rèn)為你的entity所在的包名
    daoPackage ''com.example.kenvin.greendaodemo.gen''
    //這就是我們上面說到的自定義生成數(shù)據(jù)庫文件的目錄了,可以將生成的文件放到我們的java目錄中
    ,而不是build中,這樣就不用額外的設(shè)置資源目錄了
    targetGenDir 'src/main/java'
}

具體截圖如下:


app projects build.gradle
root build.gradle

4 、創(chuàng)建一個實體類,實體類添加@Entity注解

實體類添加@Entity注解

5、build(Build->Make Project)項目

  • 會自動生成一些數(shù)據(jù)庫相關(guān)類,這些類在build.gradle里設(shè)置的目錄下,而且實體類里面也會自動生成get/set方法


    build(Build->Make Project)項目
  • DaoMaster:使用greenDAO的切入點。DaoMaster保存數(shù)據(jù)庫對象(SQLiteDatabase)并管理特定模式的DAO類(而不是對象)。 它具有靜態(tài)方法來創(chuàng)建表或?qū)⑺鼈儎h除。 其內(nèi)部類OpenHelper和DevOpenHelper是在SQLite數(shù)據(jù)庫中創(chuàng)建模式的SQLiteOpenHelper實現(xiàn)。一個DaoMaster就代表著一個數(shù)據(jù)庫的連接。

  • DaoSession:管理特定模式的所有可用DAO對象,您可以使用其中一個getter方法獲取。 DaoSession還為實體提供了一些通用的持久性方法,如插入,加載,更新,刷新和刪除。 DaoSession可以讓我們使用一些Entity的基本操作和獲取Dao操作類,DaoSession可以創(chuàng)建多個,每一個都是屬于同一個數(shù)據(jù)庫連接的。

  • XxxDAO:數(shù)據(jù)訪問對象(DAO)持續(xù)存在并查詢實體。 對于每個實體,GreenDAO生成一個DAO。 它比DaoSession有更多的持久化方法,例如:count,loadAll和insertInTx。

6、greenDao的簡單使用

  • 1、創(chuàng)建數(shù)據(jù)庫管理類
    使用單例模式
使用單例模式
  • 2、獲取可讀數(shù)據(jù)庫


    獲取可讀數(shù)據(jù)庫
  • 3、獲取可寫數(shù)據(jù)庫


    獲取可寫數(shù)據(jù)庫
  • 4、插入一條記錄


    插入一條記錄

    -5 、插入用戶集合


    插入用戶集合
  • 6、刪除一條記錄


    刪除一條記錄

    -7、更新一條記錄


    更新一條記錄

    -8、查詢用戶列表
    查詢用戶列表

7、 數(shù)據(jù)庫版本升級

數(shù)據(jù)庫版本升級

在這里修改數(shù)據(jù)庫版本號

在這里修改數(shù)據(jù)庫版本號
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容