GreenDao简述

来源:互联网 发布:淘宝账号怎么找回 编辑:程序博客网 时间:2024/05/19 16:37

http://www.tuicool.com/articles/Rvema2

ORM 應該不用多做解釋了,

而Android自己本身並沒有ORM的任何lib可用,

但有很多熱心的人做了third-party lib,像是 OrmLite 、 greenDao ,

本篇要講的是greenDao,

為什麼我使用greenDao呢?

其實網路上不少人在做OrmLite和greenDao的 benchmark ,

greenDao的performance真是一片倒,

也因此我選擇了greenDao,

不過說實在的,greenDao一開始的前置作業真是有點麻煩!

所以特地寫一篇來記錄!

1. Clone the repository

先把greenDao的repository clone下來,

git clone https://github.com/greenrobot/greenDAO.git

2. Download jar

這就是我說的,前置作業很麻煩!

有3個必要的jar檔,竟然沒有在repository中!

要自行去下載!不過用gradle和marven就不用自行去下載,

anyway我用的是eclipse,所以得去下載!

1. freemaker.jar

2. greendao-generator-1.3.0

3. greendao-1.3.7.jar

前面兩個jar是為了build出dao而用的,

而後面第三個jar給我們app使用的!

在開始之前,先說明一下整體流程,

大致上分為兩個步驟,

1. 產生 DAO files

2. 把DAO files 加到自己的android project中

3. Generate DAO files

還記得第一步驟clone下來的repository嗎?

repository中有很多份中有很多個project,

我們只會用到DaoExampleGenerator,

首先先開啟你的eclipse,

點選【File】->【Import】->【General】->【Existing Projects into Workspace】->選擇【DaoExampleGenerator】project

import進來以後應該會很多error,

因為少了2個jar檔,就把【freemaker.jar】和【greendao-generator-1.3.0】import進來吧!

接著打開ExampleDaoGenerator這個class,

這隻java會幫你generate出4個files,

1. DaoMaster

2. DaoSession

3. Model

4. ModelDao

DAO就是用來負責db的一切操作, create table, insert, delete, query...etc.

model就單純是一個object而已!

這四個files都要加到我們的android project之中,

接著來說明一下ExampleDaoGenerator裡面在做什麼,(我把原本的code改成我的sample了)

public static void main(String[] args) throws Exception {  // 第一個參數是db的版本,第二個是package名稱  Schema schema = new Schema(1, "net.kenyang.dao");   addNote(schema);  // 產生上述說明的files  new DaoGenerator().generateAll(schema, "../");}private static void addNote(Schema schema) {  // 這裡可以想像就是增加一個table,有三個欄位,且都是not null  Entity note = schema.addEntity("Note");  note.addIdProperty();  note.addStringProperty("title").notNull();  note.addDateProperty("date").notNull();  note.addIntProperty("category").notNull();  }

接著只要按下run以後,這些files就會被產生出來!

接著就把這些files搬移到你的android project當中,

請注意!!由於我們上面的schema是"net.kenyang.dao",

那麼你的android project中也要有這個package,並且把這些files放置在該package當中!

4. Insert, select, delete

完成上面的前置作業以後,在開始之前,

請記得把第二步驟下載的greendao-1.3.7.jar加到android project中,

接著就可以開始使用了!

insert

DevOpenHelper helper = new DevOpenHelper(this, "expense", null);DaoMaster daoMaster = new DaoMaster(helper.getWritableDatabase());DaoSession daoSession = daoMaster.newSession();NoteDao noteDao = session.getNoteDao();Note note = new Note(null, "hello", new Date(), 0);noteDao.insert(note);

select

QueryBuilder<Note> query = noteDao.queryBuilder();// 查詢如果日期小於今天,並且照日期排序query.where(Properties.Date.le(calendar.getTime())).orderDesc(Properties.Date);for (Note n : query.list()) {     Log.e("ken", n.getTitle());       }

update

public void fnUpdate(long id) {        Note note = noteDao.load(id);        note.setTitle("change title");        noteDao.update(note);}

delete

public void fnDelete(long id) {        noteDao.deleteByKey(id);}

比原本的SQLiteOpenHelper好用太多了啊!


0 0
原创粉丝点击