greenDAO 3.X詳細解析(一)

greenDAO是什么

greenDAO是一個開源的Android ORM,使SQLite數(shù)據(jù)庫的開發(fā)再次有趣膀估。它減輕開發(fā)人員處理低級數(shù)據(jù)庫需求谎亩,同時節(jié)省開發(fā)時間。 SQLite是一個令人敬畏的嵌入式關(guān)系數(shù)據(jù)庫轴或。不過,編寫SQL和解析查詢結(jié)果是相當乏味和耗時的任務(wù)仰禀。通過將Java對象映射到數(shù)據(jù)庫表(稱為ORM照雁,“對象/關(guān)系映射”),greenDAO可以將它們從這些映射中釋放出來答恶。這樣饺蚊,可以使用簡單的面向?qū)ο蟮腁PI來存儲,更新悬嗓,刪除和查詢Java對象污呼。

greenDAO的功能和優(yōu)勢

  • 最高性能(可能是Android最快的ORM);并且開源
  • 易于使用的功能強大的API涵蓋
  • 最小的內(nèi)存消耗
  • 數(shù)據(jù)庫加密,greenDAO支持SQLCipher烫扼,以保護用戶的數(shù)據(jù)安全
  • 強大的社區(qū),官網(wǎng)首頁:http://greenrobot.org/greendao/ 碍庵,github首頁:https://github.com/greenrobot/greenDAO

尤其在性能方面映企,greenDAO 遠遠高于同類的其他ORM框架,測試結(jié)果參考至官網(wǎng):http://greenrobot.org/greendao/features/

如何將greenDAO添加到工程

參照搞其github首頁的readme静浴,首先是整個工程項目下的build.gradle的配置堰氓;然后是單獨的Module(如默認的:app)下的build.gradle的配置

// In your root build.gradle file:
buildscript {
    repositories {
        jcenter()
        mavenCentral() // add repository
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.1'
        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin
    }
}
 
// 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
}

遇到網(wǎng)速很慢的情況下,可以換阿里云服務(wù)器苹享。

Project build.gradle:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
//        jcenter()
//        mavenCentral() // add repository
        maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}//阿里云服務(wù)器
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.2'
        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
//        jcenter()
        maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}//阿里云服務(wù)器
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

app module build.gradle:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
//        jcenter()
//        mavenCentral() // add repository
        maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}//阿里云服務(wù)器
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.2'
        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
//        jcenter()
        maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}//阿里云服務(wù)器
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

實例講解

我們在新建的工程的app module下面先新建一個實體類UserEntity.java:

里面有name双絮,password浴麻,age這3項屬性,注意在public class的上方囤攀,我們加有@Entity注解標簽软免,表明這是一個實體類。然后我們make project焚挠,在build/generated/source下面greenDAO會自動幫我們生成3個文件

同時回過頭我們也發(fā)現(xiàn)我們剛剛的實體類也發(fā)生了變化:新增了getter膏萧,setter以及構(gòu)造函數(shù)

我們可以通過在Module的build.gradle中新增配置來設(shè)置greenDAO幫我們自動生成文件的路徑,而不是在build/generated/source下面蝌衔,因為這樣找起來比較麻煩:

greendao {
    schemaVersion 1
    daoPackage 'com.example.greendaodemo.greendao.gen'
    targetGenDir 'src/main/java'
}
  • schemaVersion---->指定數(shù)據(jù)庫schema版本號榛泛,遷移等操作會用到
  • daoPackage-------->通過gradle插件生成的數(shù)據(jù)庫相關(guān)文件的包名,默認為你的entity所在的包名
  • targetGenDir-------->這就是我們上面說到的自定義生成數(shù)據(jù)庫文件的目錄了噩斟,可以將生成的文件放到我們的java目錄中曹锨,而不是build中,這樣就不用額外的設(shè)置資源目錄了

再次make project你就會發(fā)現(xiàn)剃允,生成的目錄不一樣了沛简,是不是很爽?


關(guān)于greenDAO的介紹和基本配置入門就先介紹到這里硅急,請關(guān)注下一節(jié)內(nèi)容:greenDAO 3.X詳細解析(二)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末覆享,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子营袜,更是在濱河造成了極大的恐慌撒顿,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件荚板,死亡現(xiàn)場離奇詭異凤壁,居然都是意外死亡,警方通過查閱死者的電腦和手機跪另,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門拧抖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人免绿,你說我怎么就攤上這事唧席。” “怎么了嘲驾?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵淌哟,是天一觀的道長。 經(jīng)常有香客問我辽故,道長徒仓,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任誊垢,我火速辦了婚禮掉弛,結(jié)果婚禮上症见,老公的妹妹穿的比我還像新娘。我一直安慰自己殃饿,他們只是感情好谋作,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著壁晒,像睡著了一般瓷们。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上秒咐,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天谬晕,我揣著相機與錄音,去河邊找鬼携取。 笑死攒钳,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的雷滋。 我是一名探鬼主播不撑,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼晤斩!你這毒婦竟也來了焕檬?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤澳泵,失蹤者是張志新(化名)和其女友劉穎实愚,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體兔辅,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡腊敲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了维苔。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片碰辅。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖介时,靈堂內(nèi)的尸體忽然破棺而出没宾,到底是詐尸還是另有隱情,我是刑警寧澤沸柔,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布循衰,位于F島的核電站,受9級特大地震影響勉失,放射性物質(zhì)發(fā)生泄漏羹蚣。R本人自食惡果不足惜原探,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一乱凿、第九天 我趴在偏房一處隱蔽的房頂上張望顽素。 院中可真熱鬧,春花似錦徒蟆、人聲如沸胁出。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽全蝶。三九已至,卻和暖如春寺枉,著一層夾襖步出監(jiān)牢的瞬間抑淫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工姥闪, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留始苇,地道東北人。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓筐喳,卻偏偏與公主長得像催式,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子避归,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

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