怎么样使用GreenDao
本教程将引导您通过一个简单的greendao示例项目。该项目链接由包含了两个子项目:DaoExample 和DaoExampleGenerator。你可以克隆Git 仓库获取代码并运行它,或者只是查看代码直接在GitHub上。
如果你从Git仓库导入DaoExample ,你可以把它作为一个Android应用程序运行。正如你所看到的,它是一个简单的应用程序–记事本。你可以创建新的笔记,也可以点击删除一个存在的笔记。
生成的代码和创建表
现在,让我们看一些代码。在文件夹src-gen中,你可以看到已经生成的代码文件:
1)Note.java是包含所有笔记数据的java类
2)NoteDao.java 是一个DAO类, 用来操作Note 对象
你总是可以通过DaoExampleGenerator项目再一次生成Note和NoteDao类。现在介绍一下项目DaoExample。通过DaoMaster类,你可以获取到一个方便使用的SQLiteOpenHelper:
new DaoMaster.DevOpenHelper(this, "notes-db", null)
正如你看到的,你不在需要使用写“CREATE TABLE”相关代码,
greenDao已经帮你完成了。
插入和删除notes
一旦我们有了笔记表,我们就可以插入一些数据在数据库中。这些将在NoteActivity类中实现,在onCreate方法中,我们可以获取一个Dao对象:
daoMaster = new DaoMaster(db);
daoSession = daoMaster.newSession();
noteDao = daoSession.getNoteDao();
现在看一下addNote方法,你怎么样插入新笔记到数据库中:
Note note = new Note(null, noteText, comment, new Date());
noteDao.insert(note);
Log.d("DaoExample", "Inserted new note, ID: " + note.getId());
只要创建一个Note对象,然后调用Dao.insert(obj)即可。当insert返回结果时,刚插入到数据库中的note对象就获取了它对应的id。正如在log 中输出的一样。
删除一个笔记对象也很简单,在onListItemClick方法中:
noteDao.deleteByKey(id);
如果你有兴趣,也可以去查看其它的DAO方法,如loadAll和update。
数据模型和代码生成
为了扩展note或者是创建新的Entity,你应该查看项目DaoExampleGenerator,里面只有一个数据模型定义的类:
Schema schema = new Schema(1, "de.greenrobot.daoexample");
Entity note= schema.addEntity(“Note”);
note.addIdProperty();
note.addStringProperty(“text”).notNull();
note.addStringProperty(“comment”);
note.addDateProperty(“date”);
new DaoGenerator().generateAll(schema, “../DaoExample/src-gen”);
正如你看到的,你创建了一个可以添加Entity的Schema对象。一个Entity类对应数据库中的一个表;并且其包含的属性也对应于数据库表中的列。一旦schema定义完成,你就可以调用代码生成相关类。这个就是Note.java 和 NoteDao.java的创建步骤。