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好用太多了啊!
- GreenDao简述
- greenDao
- greenDAO
- greenDAO
- greenDAO
- GreenDao
- GreenDAO
- Greendao
- greenDAO
- GreenDao
- GreenDao
- GreenDao
- GreenDAO
- GreenDAO
- GreenDao
- GreenDao
- greenDAO
- GreenDAO
- 互联网技术架构的启示
- [面试经]字节对齐
- 虚函数和虚基类混合的情况
- NGUI笔记
- 如何在tomcat中配置其他的虚拟主机?
- GreenDao简述
- 关于DarkZone的开发者如何获利细则
- 重新理解Java的抽象类和接口(anroid_164)
- 每天一练 2015/04/06 widget的用法
- Java jvisualvm简要说明
- JS中打印DIV
- CEdit一行一行读取字符串
- a_time--授权部分及所用知识点(含转载CONST&)
- 第五周 阅读程序 1