开始使用
本教程将引导你完成一个简单的greenDAO示例项目DaoExample。 copy代码并运行它,或者直接在GitHub上查看文件。
DaoExample是一个简单地用来记笔记的Android应用程序。 你可以通过键入一些文本来添加新笔记,并通过点击现有笔记删除笔记。
1. Note实体和DAO类
一起看下代码:在src文件夹中,你会发现一个实体类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来生成DAO类,例如NoteDao.java,这将帮助我们向数据库添加笔记。
2. 插入和删除笔记
要学习如何添加一些笔记,请看一下NoteActivity类。 首先,我们必须为我们的Note类准备一个DAO对象,我们在onCreate()中做:
// get the note DAO
DaoSession daoSession = ((App) getApplication()).getDaoSession();
noteDao = daoSession.getNoteDao();
当用户单击添加按钮时,将调用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。 在这种情况下,数据库决定note id。 DAO负责在从插入操作返回之前自动设置新的ID(请参阅日志语句)。
删除笔记也很简单,参见NoteClickListener:
noteDao.deleteByKey(id);
3. 更新笔记
下面的例子,是更新笔记操作,只需要修改属性,然后调用DAO的update方法
note.setText("This note has changed");
noteDao.update(note);
可以查看基类AbstractDao.class中其他的insert,query,update和delete方法。
4. 设置数据库
你已经看到了DAO,但是如何初始化greenDAO和底层数据库呢? 通常你需要init一个DaoSession,它通常在整个应用程序中的Application类中执行一次:
DevOpenHelper helper = new DevOpenHelper(this, "notes-db");
Database db = helper.getWritableDb();
daoSession = new DaoMaster(db).newSession();
使用生成的DaoMaster类提供的帮助器类DevOpenHelper创建数据库。 它是DaoMaster中的OpenHelper类的一个实现,它为你创建所有数据库。 再也不需要编写“CREATE TABLE”语句。
然后Activity和Fragment可以调用getDaoSession()来访问所有实体DAO,和我们之前在插入和删除的时候一样。
5. 扩展和添加实体
为了扩展我们的笔记或创建新实体,你只需修改或创建Java类,并以相同的方式注解它们。 然后重新编译项目。