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

1逼龟、GreenDao 介紹:

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

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

2、GreenDao 優(yōu)點(diǎn):

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

  • 內(nèi)存占用小

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

  • 簡(jiǎn)潔易用的API

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

// In your root build.gradle file: 設(shè)置腳本的運(yùn)行環(huán)境(如果用在app啟動(dòng)模塊祸挪,直接加3,4步,在lib模塊整個(gè)需要加進(jìn)去)
buildscript {
    repositories {
        jcenter()
        mavenCentral() // add repository 支持java 依賴庫管理(maven/ivy),用于項(xiàng)目的依賴。
    }
    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ù)庫版本號(hào)闪唆,數(shù)據(jù)庫修改后這里一定要記得修改,否則會(huì)報(bào)錯(cuò)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)建一個(gè)實(shí)體類,實(shí)體類添加@Entity注解

實(shí)體類添加@Entity注解

5豆同、build(Build->Make Project)項(xiàng)目

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


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

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

  • XxxDAO:數(shù)據(jù)訪問對(duì)象(DAO)持續(xù)存在并查詢實(shí)體吱型。 對(duì)于每個(gè)實(shí)體逸贾,GreenDAO生成一個(gè)DAO。 它比DaoSession有更多的持久化方法津滞,例如:count铝侵,loadAll和insertInTx。

6触徐、greenDao的簡(jiǎn)單使用

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


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


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


    插入一條記錄

    -5 、插入用戶集合


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


    刪除一條記錄

    -7享郊、更新一條記錄


    更新一條記錄

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

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

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

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

在這里修改數(shù)據(jù)庫版本號(hào)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末炊琉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子又活,更是在濱河造成了極大的恐慌苔咪,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,294評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件柳骄,死亡現(xiàn)場(chǎng)離奇詭異团赏,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)耐薯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,493評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門舔清,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人曲初,你說我怎么就攤上這事体谒。” “怎么了复斥?”我有些...
    開封第一講書人閱讀 157,790評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵营密,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我目锭,道長(zhǎng)评汰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,595評(píng)論 1 284
  • 正文 為了忘掉前任痢虹,我火速辦了婚禮被去,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘奖唯。我一直安慰自己惨缆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,718評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著坯墨,像睡著了一般寂汇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上捣染,一...
    開封第一講書人閱讀 49,906評(píng)論 1 290
  • 那天骄瓣,我揣著相機(jī)與錄音,去河邊找鬼耍攘。 笑死榕栏,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蕾各。 我是一名探鬼主播扒磁,決...
    沈念sama閱讀 39,053評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼式曲!你這毒婦竟也來了妨托?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,797評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤检访,失蹤者是張志新(化名)和其女友劉穎始鱼,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體脆贵,經(jīng)...
    沈念sama閱讀 44,250評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡医清,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,570評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了卖氨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片会烙。...
    茶點(diǎn)故事閱讀 38,711評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖筒捺,靈堂內(nèi)的尸體忽然破棺而出柏腻,到底是詐尸還是另有隱情,我是刑警寧澤系吭,帶...
    沈念sama閱讀 34,388評(píng)論 4 332
  • 正文 年R本政府宣布五嫂,位于F島的核電站,受9級(jí)特大地震影響肯尺,放射性物質(zhì)發(fā)生泄漏沃缘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,018評(píng)論 3 316
  • 文/蒙蒙 一则吟、第九天 我趴在偏房一處隱蔽的房頂上張望槐臀。 院中可真熱鬧,春花似錦氓仲、人聲如沸水慨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,796評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽晰洒。三九已至朝抖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間欢顷,已是汗流浹背槽棍。 一陣腳步聲響...
    開封第一講書人閱讀 32,023評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工捉蚤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留抬驴,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,461評(píng)論 2 360
  • 正文 我出身青樓缆巧,卻偏偏與公主長(zhǎng)得像布持,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子陕悬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,595評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容