GreenDao實(shí)操案例

GreenDao實(shí)操案例

GreenDao實(shí)際項(xiàng)目使用

  • 自動(dòng)生成數(shù)據(jù)對(duì)象
  • 自帶版本更新機(jī)制(數(shù)據(jù)自動(dòng)遷移),可為一鍵升級(jí)
  • 自帶FaceBook stetho的數(shù)據(jù)庫(kù)查詢調(diào)試工具

一.構(gòu)建項(xiàng)目(已有的請(qǐng)開(kāi)車到下面??)

// 添加依賴到主項(xiàng)目gradle

compile'org.greenrobot:greendao:3.2.0'

compile 'com.facebook.stetho:stetho:1.3.1'

初始化 stetho 在Applcation中進(jìn)行初始化的操作
Stetho.initializeWithDefaults(this)

二.自動(dòng)生成所有的對(duì)象

greendao-generato 是一個(gè) javalib moudle
右鍵run ~

  • 自動(dòng)生成引用的Bean對(duì)象

  • 自動(dòng)生成引用的Dao

  • 自動(dòng)生成DaoMaster DaoSession管理類并且能想到的都給添加好了(只能看著它靜靜的幫你生成)

  • 不行我要敲代碼沫屡,好的。

    DatabaseManager管理類做統(tǒng)一管理
    最后Applcation初始化

`

public static void main(String[] args) throws Exception {
    Schema schema = new Schema(2, "com.classliu.greendao.db.bean"); //bean對(duì)象的路勁
    schema.setDefaultJavaPackageDao("com.classliu.greendao.db.dao"); //dao對(duì)象路徑
    addTest(schema);
    addTest2(schema);
    addTest3(schema);
    addTest4(schema);
    addTest5(schema);

    //H:\demo\GreenDao\app\src
    //H:\demo\GreenDao\app\src\main\java-gen
    new DaoGenerator().generateAll(schema, "\\H:\\demo\\GreenDao\\app\\src\\main\\java-gen");
}



//生成bean對(duì)象
private static void addTest(Schema schema) {
    Entity testData = schema.addEntity("TestData"); //
    testData.addIdProperty().primaryKey().autoincrement();//primaryKey
    testData.addStringProperty("reader"); //reader 是 string 類型
    testData.addLongProperty("testLong"); //testLong 是 long 類型
    testData.addDateProperty("testDate");//testDate 是long 類型
    testData.addIntProperty("testInt");// testInt 是int 類型
    testData.addBooleanProperty("testBoolean"); //testBoolean 是布爾類型
    testData.addIntProperty("creatId"); 
}
private static void addTest2(Schema schema) {
    Entity testData = schema.addEntity("TestData2");
    testData.addIdProperty().primaryKey().autoincrement();
    testData.addStringProperty("testString");
    testData.addLongProperty("testLong");
    testData.addDateProperty("testDate");
    testData.addIntProperty("testInt");
    testData.addBooleanProperty("testBoolean");
}
private static void addTest3(Schema schema) {
    Entity testData = schema.addEntity("TestData3");
    testData.addIdProperty().primaryKey().autoincrement();
    testData.addStringProperty("testString");
    testData.addLongProperty("testLong");
    testData.addDateProperty("testDate");
    testData.addIntProperty("testInt");
    testData.addBooleanProperty("testBoolean");
}

private static void addTest4( Schema schema) {
    Entity testData = schema.addEntity("TestData4");
    testData.addIdProperty().primaryKey().autoincrement();
    testData.addStringProperty("reader");
    testData.addStringProperty("readerString");
    testData.addIntProperty("testInt");
    testData.addBooleanProperty("testBoolean");
}


private static void addTest5(Schema schema) {
    Entity testData = schema.addEntity("TestData5");
    testData.addIdProperty().primaryKey().autoincrement();
    testData.addStringProperty("testString");
    testData.addLongProperty("testLong");
    testData.addDateProperty("testDate");
    testData.addIntProperty("testInt");
    testData.addBooleanProperty("testBoolean");
}

`

三.數(shù)據(jù)庫(kù)升級(jí)(數(shù)據(jù)遷移)

MySQLiteOpenHelper extends DaoMaster.OpenHelper 重寫(xiě)DaoMaster.OpenHelper
在onUpgrade方法中寫(xiě)出符合項(xiàng)目需求的升級(jí)操作贵试,因?yàn)轫?xiàng)目各異所有工具類的使用需要根據(jù)自身的要求量身需改。

  • 增加刪table 只需要?jiǎng)h除 添加class文件(可變參數(shù)的個(gè)數(shù))
  • 增加刪table 中的列只需要修改對(duì)應(yīng)table的變量
    一句話總結(jié):修改你的Bean對(duì)象凯正,就歐了

四.結(jié)合標(biāo)準(zhǔn)MVP結(jié)構(gòu)

  • 模擬網(wǎng)絡(luò)數(shù)據(jù)的請(qǐng)求毙玻,可結(jié)合至實(shí)際項(xiàng)目
    數(shù)據(jù)庫(kù)的數(shù)據(jù)操作,可與實(shí)際的網(wǎng)絡(luò)請(qǐng)求相對(duì)接廊散,方便易用桑滩,真實(shí)可靠。(具體的操作)
    Demo中主要提供一些關(guān)于數(shù)據(jù)庫(kù)的操作
    增加允睹,刪除所有 运准,
    具體的增刪改查的操作

  • 大批量的更新數(shù)據(jù)庫(kù)耗時(shí)優(yōu)化體驗(yàn)

    項(xiàng)目中提供增加10000條數(shù)據(jù)、異步增加10000條數(shù)據(jù)
    異步多線程操作方式缭受,開(kāi)啟三個(gè)線程池同時(shí)進(jìn)行數(shù)據(jù)庫(kù)的操作

五.總結(jié)

經(jīng)實(shí)際測(cè)試:

  • 數(shù)據(jù)遷移的時(shí)間在 25——30ms之間(1000條)

  • 直接插入10000條數(shù)據(jù)大約耗時(shí) 900--950ms 異步工具耗時(shí)是 1/100(運(yùn)行Demo效果更感人)
    你需要親自運(yùn)行一下代碼~

    擁抱開(kāi)源胁澳,感謝GreenDao !C渍摺韭畸!我不是代碼的創(chuàng)造者,我是工具宣傳員

    Demo源碼地址


感謝:如果喜歡本文加個(gè)收藏關(guān)注塘雳, Github star一下 Orz

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末陆盘,一起剝皮案震驚了整個(gè)濱河市普筹,隨后出現(xiàn)的幾起案子败明,更是在濱河造成了極大的恐慌,老刑警劉巖太防,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件妻顶,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡蜒车,警方通過(guò)查閱死者的電腦和手機(jī)讳嘱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)酿愧,“玉大人沥潭,你說(shuō)我怎么就攤上這事℃业玻” “怎么了钝鸽?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵汇恤,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我拔恰,道長(zhǎng)因谎,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任颜懊,我火速辦了婚禮财岔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘河爹。我一直安慰自己匠璧,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布昌抠。 她就那樣靜靜地躺著患朱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪炊苫。 梳的紋絲不亂的頭發(fā)上裁厅,一...
    開(kāi)封第一講書(shū)人閱讀 51,554評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音侨艾,去河邊找鬼执虹。 笑死,一個(gè)胖子當(dāng)著我的面吹牛唠梨,可吹牛的內(nèi)容都是我干的袋励。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼当叭,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼茬故!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起蚁鳖,我...
    開(kāi)封第一講書(shū)人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤磺芭,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后醉箕,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體钾腺,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年讥裤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了放棒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡己英,死狀恐怖间螟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤厢破,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布邮府,位于F島的核電站,受9級(jí)特大地震影響溉奕,放射性物質(zhì)發(fā)生泄漏褂傀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一加勤、第九天 我趴在偏房一處隱蔽的房頂上張望仙辟。 院中可真熱鬧,春花似錦鳄梅、人聲如沸叠国。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)粟焊。三九已至,卻和暖如春孙蒙,著一層夾襖步出監(jiān)牢的瞬間项棠,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工挎峦, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留香追,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓坦胶,卻偏偏與公主長(zhǎng)得像透典,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子顿苇,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

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

  • 一峭咒、關(guān)于greenDAO greenDAO應(yīng)該算是當(dāng)前最火的數(shù)據(jù)庫(kù)開(kāi)源框架了,它是一個(gè)將對(duì)象映射到SQLite數(shù)據(jù)...
    當(dāng)幸福來(lái)敲門(mén)58閱讀 13,873評(píng)論 3 19
  • 前段時(shí)間工作中接觸到了數(shù)據(jù)庫(kù)greendao纪岁,將項(xiàng)目中所有原生sqlite替換成為了greendao數(shù)據(jù)庫(kù)封裝框架...
    ya_nn閱讀 14,945評(píng)論 6 33
  • (一)GreenDao簡(jiǎn)介 GreenDao是一個(gè)對(duì)象關(guān)系映射(ORM)的開(kāi)源框架凑队,目前最主流的安卓數(shù)據(jù)庫(kù)操作框架...
    miss2008閱讀 5,246評(píng)論 4 18
  • 浮生無(wú)常 紅塵似錦隨風(fēng)葬 玉骨石心終要喪 千萬(wàn)悲傷 明月鎖永長(zhǎng) 莫道共賞 寒梅疏影不弄墻 云淡星暗舞未央 抹去輕狂...
    君兮閱讀 354評(píng)論 6 7
  • 我小時(shí)候的東北秋天顽决,就像是定好的時(shí)鐘短条。到了某一天导匣,家家戶戶都開(kāi)始買(mǎi)幾十斤的大蔥,白菜茸时,準(zhǔn)備過(guò)冬贡定。那時(shí)候沒(méi)有四季大棚...
    櫻桃小獨(dú)角閱讀 492評(píng)論 2 4