GreenDao 使用

目錄結(jié)構(gòu):

  1. 關(guān)于GreenDao

  2. 集成步驟

2.1 下載配置 [GREENDAO GENERATOR]

2.2 定義表的結(jié)構(gòu)

2.3 生成工程

  1. 如何使用

3.1 配置gradle

3.2 Coding

  1. Demo

  2. 最后


正文:

1. 關(guān)于GreenDao

DAO CODE GENERATION PROJECT

更詳細描述信息可以到[官網(wǎng)]查看

2. 集成步驟

2.1 下載配置 [GREENDAO GENERATOR]

首先揽咕,打開一個需要集成的工程悲酷。為了演示需要,我在這里創(chuàng)建了一個新的工程:

Application name可以隨意起

好了亲善,一個干凈的工程創(chuàng)建完成设易。我們來看看,greenDao更新到哪個版本了:
這個是官方的Git Repo【傳送門】蛹头,這里有demo和generator等工程顿肺。
回到剛才創(chuàng)建的那個新工程,這里面先創(chuàng)建一個目錄渣蜗,用來存放GreenDao生成的文件:

切換成Projects模式屠尊,才能看到這個紅色框起來的選項。

完成之后耕拷,我們接下來的操作讼昆。
以模塊方式引用Generator

創(chuàng)建一個新的模塊

空的java library

這里工程名,我寫的是GreenDaoLib斑胜。

創(chuàng)建完成了控淡。再配置工程里的 build.gradle嫌吠,添加 dependencies.
因為generator最新的版本是2.2.0(剛才的官方Git Repo地址打開可以看到)

我們將
compile 'org.greenrobot:greendao-generator:2.2.0'
添加到剛才java library那個工程的build.gradle中:

compile 'org.greenrobot:greendao-generator:2.2.0'

到這里止潘,我們的配置工作已經(jīng)完成一半了,現(xiàn)在需要去定義一下數(shù)據(jù)庫的基本信息辫诅,
而這個信息,需要根據(jù)項目使用的數(shù)據(jù)項有關(guān)。實際上帖世,generator是將對象翻譯成一個一套接口的這么個工具盐茎,那么我們現(xiàn)在需要去編寫相應(yīng)的java 對象。

2.2 定義表的結(jié)構(gòu)

這里分三步:

  • 首先:
    我們需要創(chuàng)建一個Schema肤视,
  • 然后:
package com.example;
import de.greenrobot.daogenerator.DaoGenerator;
import de.greenrobot.daogenerator.Entity;
import de.greenrobot.daogenerator.Schema;
public class DemoGenerator {    
public static void main(String[] args) throws Exception {        
//step 1:        
    Schema schema = new Schema(100, "charles.nocompany.greendao");        
//step 2:        
    addTest(schema);        
//step 3:        
    new DaoGenerator().generateAll(schema,"./app/src/main/java-gen");    
}    

private static void addTest(Schema schema) {        
      Entity testTable = schema.addEntity("TestTable");        
      testTable.addIdProperty().primaryKey().autoincrement();
      testTable.addStringProperty("text").notNull();        
      testTable.addStringProperty("comment");        
      testTable.addDateProperty("date");    
}}
  • 最后:
    設(shè)置一下輸出的路徑(剛才我們在java的同級目錄下創(chuàng)建了一個java-gen的目錄档痪,
    那么這里的generateAll的第二參數(shù)就設(shè)置到那里去"./app/src/main/java-gen")

2.3 生成工程

可以看到,我們將OutPut 設(shè)置到之前那個Java-gen的目錄下:
newDaoGenerator().generateAll(schema,"./app/src/main/java-gen");
最后會在我們設(shè)置的output目錄下生成:
DaoMaster邢滑、DaoSession腐螟、TestTableDao、TestTable
4個文件


這幾個類,就是我們將在工程中使用的東西乐纸。
問:如果一個項目中有個表衬廷,怎么辦?
答:再創(chuàng)建一個addXXX的函數(shù)如addTest那樣汽绢,定義屬性吗跋,重新生成一次。

3.如何使用

3.1配置gradle

首先宁昭,回到我們之前創(chuàng)建的那個Demo工程
設(shè)置一下build.gradle文件
需要修改sourceset 和dependencies

apply plugin: 'com.android.application'android {    

compileSdkVersion 24    
buildToolsVersion "23.0.3"    

   defaultConfig {        
    applicationId "com.nocompany.touc.demogreendao"        
    minSdkVersion 22        
    targetSdkVersion 24       
     versionCode 1        
    versionName "1.0"    
}    

  buildTypes {        
    release {            
    minifyEnabled false            
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'       
   }    
}    

sourceSets {        
   main {            
    java.srcDirs = ['src/main/java', 'src/main/java-gen']        
  }    
}
}

dependencies {    
  compile fileTree(dir: 'libs', include: ['*.jar'])    
  testCompile 'junit:junit:4.12'    
  compile 'com.android.support:appcompat-v7:24.0.0'    
  compile 'org.greenrobot:greendao:2.2.1'
}

3.2 Coding

好了跌宛,所有準備工作都做好了,現(xiàn)在開始使用GreenDao了积仗。

1. 編寫Actitvity&XML文件

這里需要三個文件秩冈,一個用來顯示的Activity,和兩個XML文件斥扛。

Paste_Image.png
Paste_Image.png

2. 數(shù)據(jù)庫部分代碼:

private void setupDatabase() {    
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "testTable_db", null);    
  db = helper.getWritableDatabase();   
  daoMaster = new DaoMaster(db);    
  daoSession = daoMaster.newSession();
}

3.增入问、刪、改稀颁、查

String str=inputEditText.getText().toString().trim();
String comment="comment";
TestTable table1= new TestTable(null,str,comment,new Date());
daoSession.getTestTableDao().insert(table1);
DeleteQuery deleteQuery=daoSession.getTestTableDao().queryBuilder() 
                        .where(TestTableDao.Properties.Id.gt(0))
                        .buildDelete();
deleteQuery.executeDeleteWithoutDetachingEntities();
String comment="comment2";
String str=inputEditText.getText().toString().trim();
Query query = daoSession.getTestTableDao().queryBuilder()
                    .where(TestTableDao.Properties.Text.eq(str))        
                    .orderAsc(TestTableDao.Properties.Date)        
                    .build();
List<TestTable> list = query.list();
TestTable table1 = list.get(0);
table1.setComment(comment);
daoSession.getTestTableDao().update(table1);
Query query = daoSession.getTestTableDao().queryBuilder() 
                        .where(TestTableDao.Properties.Text.eq(str))
                        .orderAsc(TestTableDao.Properties.Date) 
                        .build();
List<testTable> list = query.list();

4.Demo

GIF.gif

5.最后

官方介紹:http://greenrobot.org/greendao/documentation//introduction/
官方repo:https://github.com/greenrobot/greenDAO

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末芬失,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子匾灶,更是在濱河造成了極大的恐慌棱烂,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件阶女,死亡現(xiàn)場離奇詭異颊糜,居然都是意外死亡,警方通過查閱死者的電腦和手機秃踩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門衬鱼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人憔杨,你說我怎么就攤上這事鸟赫。” “怎么了消别?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵抛蚤,是天一觀的道長。 經(jīng)常有香客問我寻狂,道長岁经,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任蛇券,我火速辦了婚禮缀壤,結(jié)果婚禮上朽们,老公的妹妹穿的比我還像新娘。我一直安慰自己诉位,他們只是感情好骑脱,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著苍糠,像睡著了一般叁丧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上岳瞭,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天拥娄,我揣著相機與錄音,去河邊找鬼瞳筏。 笑死稚瘾,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的姚炕。 我是一名探鬼主播摊欠,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼柱宦!你這毒婦竟也來了些椒?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤掸刊,失蹤者是張志新(化名)和其女友劉穎免糕,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體忧侧,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡石窑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蚓炬。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片松逊。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖试吁,靈堂內(nèi)的尸體忽然破棺而出棺棵,到底是詐尸還是另有隱情,我是刑警寧澤熄捍,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站母怜,受9級特大地震影響余耽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜苹熏,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一碟贾、第九天 我趴在偏房一處隱蔽的房頂上張望币喧。 院中可真熱鬧,春花似錦袱耽、人聲如沸杀餐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽史翘。三九已至,卻和暖如春冀续,著一層夾襖步出監(jiān)牢的瞬間琼讽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工洪唐, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留钻蹬,地道東北人。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓凭需,卻偏偏與公主長得像问欠,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子粒蜈,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353

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

  • 前言 我相信溅潜,在平時的開發(fā)過程中,大家一定會或多或少地接觸到SQLite薪伏。然而在使用它時滚澜,我們往往需要做許多額外的...
    勤奮的pangdunhu閱讀 2,008評論 1 11
  • 一、Greendao簡介 Greendao是一款用于數(shù)據(jù)庫創(chuàng)建與管理的框架嫁怀,由于原生SQLite語言比較復(fù)雜繁瑣...
    王培921223閱讀 736評論 1 1
  • GreenDao GreenDao是一個高效的數(shù)據(jù)庫訪問ORM框架设捐,節(jié)省了自己編寫SQL的時間,快速的增刪查改等操...
    DorisSunny閱讀 22,776評論 4 20
  • 前言 在平時的開發(fā)過程中塘淑,大家一定會或多或少地接觸到 SQLite萝招。然而在使用它時,我們往往需要做許多額外的工作存捺,...
    hongzhenw閱讀 876評論 0 3
  • 在Android開發(fā)過程中槐沼,有時候我們需要使用SQLite數(shù)據(jù)庫去本地存儲一些臨時文件,之前捌治,我們的做法是通過SQ...
    耀東wang閱讀 79,443評論 14 48