目錄結(jié)構(gòu):
-
關(guān)于GreenDao
-
集成步驟
2.1 下載配置 [GREENDAO GENERATOR]
2.2 定義表的結(jié)構(gòu)
2.3 生成工程
-
如何使用
3.1 配置gradle
3.2 Coding
-
Demo
-
最后
正文:
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文件斥扛。
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
5.最后
官方介紹:http://greenrobot.org/greendao/documentation//introduction/
官方repo:https://github.com/greenrobot/greenDAO