greenDAO简介
greenDAO是一种Android数据库ORM(object/relational mapping)框架,与OrmLite、ActiveOrm、LitePal等数据库相比,单位时间内可以插入、更新和查询更多的数据,而且提供了大量的灵活通用接口。
如何开始
greenDAO需要提前生成Entity、DAO等文件,因此需要先建立一个java工程用于生成上述文件。具体可以参照 GitHub源码
1、 在Android Studio中选择File -> New -> New Module -> Java Library建立greenDAO Generate工程
2、 在新建的Java工程中新建一个Java类,该Java类用于生成项目所需的Entity、DAO等文件,以下是该类的模板代码:
public static void main(String[] args) throws Exception {
Schema schema = new Schema(1000, "de.greenrobot.daoexample");
addNote(schema);
new DaoGenerator().generateAll(schema, "./DaoExample/src/main/java");
}
private static void addNote(Schema schema) {
Entity note = schema.addEntity("Note");
note.addIdProperty().primaryKey().autoincrement();
note.addStringProperty("text").notNull();
note.addStringProperty("comment");
note.addDateProperty("date");
}
在main方法中,
Schema schema = new Schema(3, "de.greenrobot.daoexample");
该方法第一个参数用来更新数据库版本号,第二个参数为要生成的DAO类所在包路径。 然后进行建表和设置要生成DAO文件的目标工程的项目路径。
addNote(schema);
new DaoGenerator().generateAll(schema, "./DaoExample/src/main/java");
最后生成的文件会在目录./DaoExample/src/main/java/de/greenrobot/daoexample下看到。 创建一个实体类Entity就是对应一张表,默认表名就是类名,也可以自定义表名
Entity note = schema.addEntity("Note"); // 默认表名为类名
note.setTableName("CustomNote"); // 自定义表名
greenDAO会自动根据实体类属性创建表字段,并赋予默认值。例如在数据库方面的表名和列名都来源于实体类名和属性名。默认的数据库名称是大写使用下划线分隔单词,而不是在Java中使用的驼峰式大小写风格。例如,一个名为“CREATIONDATE”属性将成为一个数据库列“CREATION_DATE”。 可以设置一个自增长ID列为主键,也可以设置其他各种类型的属性:
note.addIdProperty().primaryKey().autoincrement(); // 自增长ID为主键
note.addStringProperty("text").notNull(); // text列不能为空
3、 最后还需要在Java工程下的build.gradle文件中引入greendao-generator
compile 'de.greenrobot:greendao-generator:2.1.0'
4、 执行Java工程,就可以生成项目所需的各种Entity、DAO等文件
5、 Android工程还需要引入greendao
compile 'de.greenrobot:greendao:2.1.0'
### 数据库常用操作 在正式开始进行增删改查操作前还需要简单的初始化,代码如下:
DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "notes-db", null);
db = helper.getWritableDatabase();
da