分类: Android平台
2016-06-14 20:46:08
greenDAO 是一个将对象映射到 SQLite 数据库中的轻量且快速的 ORM框架。通过使用一个简单的面向对象API,开发者可以对Java对象进行存储、更新、删除和查询。
为了在 Android 工程中使用 greenDAO ,需要另外创建一个Java Project模块,用于自动生成 Android 工程中需要使用到的 Bean、DAO、DaoMaster、DaoSession 等类。
1.在 .src/main 目录下新建一个与 java 同层级的「java-gen」目录,用于存放由 greenDAO 生成的 Bean、DAO、DaoMaster、DaoSession 等类。
2.配置 Android 工程(app)的 build.gradle,如图分别添加 sourceSets 与dependencies。
sourceSets {
main {
java.srcDirs = ['src/main/java', 'src/main/java-gen']
}
}
compile 'de.greenrobot:greendao:1.3.7'
1. 新建java工程模块
2. 配置 daoexamplegenerator 工程的 build.gradle,添加 dependencies
compile 'de.greenrobot:greendao-generator:1.3.1'
3.编写 ExampleDaoGenerator 类,决定了GreenDao Generator的输出,可以在这个类中通过对象、关系等创建数据库结构。
public class ExampleDaoGenerator {
public static void main(String[] args) throws Exception {
// 创建了一个用于添加实体(Entity)的模式(Schema)对象。
// 两个参数分别代表:数据库版本号与自动生成代码的包路径。
Schema schema = new Schema(1, "me.itangqi.greendao");
// 也可以分别指定生成的 Bean 与 DAO 类所在的目录,只要如下所示:
// Schema schema = new Schema(1, "me.itangqi.bean");
// schema.setDefaultJavaPackageDao("me.itangqi.dao");
// 模式(Schema)同时也拥有两个默认的 flags,分别用来标示 entity 是否是 activie 以及是否使用 keep sections。
// schema2.enableActiveEntitiesByDefault();
// schema2.enableKeepSectionsByDefault();
// 使用schema 对象添加实体(Entities)
addNote(schema);
// 使用 DAOGenerator 类的 generateAll() 方法自动生成代码,可以需要根据自己的情况更改输出目录(既之前创建的 java-gen)。
// 其实,输出目录的路径也可以在 build.gradle 中设置new DaoGenerator().generateAll(schema, "/Users/tangqi/android-dev/AndroidStudioProjects/MyGreenDAO/app/src/main/java-gen");
}
private static void addNote(Schema schema) {
// 一个实体(类)就关联到数据库中的一张表,此处表名为Note(即类名)
Entity note = schema.addEntity("Note");
// 也可以重新给表命名
// note.setTableName("NODE");
// greenDAO 会自动根据实体类的属性值来创建表字段,并赋予默认值
// 可以设置表中的字段:
note.addIdProperty();
note.addStringProperty("text").notNull();
// 与在 Java 中使用驼峰命名法不同,默认数据库中的命名是使用大写和下划线来分割单词的。
// 例如, 属性“creationDate” 对应数据库中列 “CREATION_DATE”。
// 设置实体类名为 age,数据库列名为 _age
//entity.addStringProperty("comment ").columnName("my_comment ");
note.addStringProperty("comment");
note.addDateProperty("date");
}
}
执行 generator 工程,在android主工程java-gen下会发现生成了DaoMaster、DaoSession、NoteDao、Note共4个类文件。
在Android项目中使用这些生成的类来完成对数据库的操作。
首先就是实例化一个DevOpenHelper对象,通过这个对象获取一个SQLiteDatabase实例。
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "notes-db", null);
db = helper.getWritableDatabase();
然后再实例化一个DaoMaster对象,再通过daoMaster获取一个DaoSession实例,接着就可以通过这个DaoSession实例获取一个NoteDao实例。
daoMaster = new DaoMaster(db);
daoSession = daoMaster.newSession();
noteDao = daoSession.getNoteDao();
通过Dao对象操作数据库,如
Note note = new Note(null, noteText, comment, new Date());
noteDao.insert(note);
noteDao.deleteByKey(id);