greenDAO文档翻译之一:如何开始
这个教程将带你领略一个简单的greenDAO示范项目——DAOExample。你可以很轻松地clone它的源码并把它运行起来,或者干脆在Github直接阅读源文件吧。
DaoExample是一个提供写笔记的简单Android App。创建笔记的时候,你可以都写上同样的文字,删除一个旧笔记轻轻一点就可。
Note实体和DAO类
让我们来通过扒代码一探究竟:在src的文件夹里你会发现note的实体类文件Note.java。它包含一个note的所有数据比如id,文本以及创建日期等被存储到数据库中。
@Entity(indexes = {
@Index(value = "text, date DESC", unique = true)})
public class Note {
@Id
private Long id;
@NotNull
private String text;
private Date date;
...
}
通常来讲,一个类的实体对应存储在数据库中的一行(例如:一行便是一个对象)。一个实体所包含的属性恰恰映射到数据库中的列。
现在执行构建项目,比如在Android Studio中是通过“Build > Make project”。这会触发greenDAO去生成像NoteDao.java
之类的DAO类,会帮助我们向数据库中添加更多笔记。
插入和删除笔记
为了学习如何添加新的笔记,先看一眼NoteActivity.java类。首先,我们需要在onCreate()
方法里为我们的Note类准备一个DAO对象。
// get the note DAO
DaoSession daoSession = ((App) getApplication()).getDaoSession();
noteDao = daoSession.getNoteDao();
当用户点击“add”按钮的时候,addNote()
会被调用。背后的逻辑是,我们创建一个新的Note对象并把它传给它的Dao类中的insert()
方法,把它插入到数据库中。
Note note = new Note(null, noteText, comment, new Date());
noteDao.insert(note);
Log.d("DaoExample", "Inserted new note, ID: " + note.getId());
有没有注意到我们在创建笔记的时候并没有传过去id。在这种情况下数据库会自己决定笔记的id。DAO在执行完插入之后会自动返回一个经过考量的新id。
删除一个笔记也非常简单明了,请看NoteClickListener
:
noteDao.deleteByKey(id);
如果你觉得这些都太小儿科了,你还可以继续探索NoteDao
里面的其他方法,比如loadAll()
和update()
。
设置数据库
你已经看到DAO了,但是你知道怎么初始化greenDAO和底层的数据库吗?告诉你,通常需要在App的全局Application类中初始化一个DaoSession
对象。
DevOpenHelper helper = new DevOpenHelper(this, "notes-db");
Database db = helper.getWritableDb();
daoSession = new DaoMaster(db).newSession();
数据库是由帮助类DevOpenHelper
创建的,它在生成的DaoMaster
类中。在DaoMaster
类中,DevOpenHelper
通过实现OpenHelper
类来为你创建了所有的数据库。这样就没有必要再写”CREATE TABLE”这样的SQL语句了。
你上面看到的插入和删除笔记功能,如果在Activity和Fragment中的话,接下来就可以调用getDaoSession()
来访问所有的实体DAO了。
扩展和添加实体
为了扩展我们的笔记或者创建新的实体,你可以用同样的方式修改或者创建Java类和注解。然后再次构建你的项目。
请到Modelling entities查看更多细节。
下一步
现在你已经对greenDAO有了一个印象了,是时候撸起袖子亲自尝试一番了!继续查看完整的文档,从介绍开始。
最后,如果你没有找到你想要的东西,请告诉我们。
原文档在这里,欢迎指正。