GreenDao简述

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好用太多了啊!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值