Android ORM-GreenDao学习之一基础篇
概述
使用初始化
helper = new DaoMaster.DevOpenHelper(this, "notes-db", null);//greendao会创建notes-db这个数据库 db = helper.getWritableDatabase(); daoMaster = new DaoMaster(db); daoSession = daoMaster.newSession(); noteDao = daoSession.getNoteDao();使用示例:
Note note = new Note(null, noteText, comment, new Date()); noteDao.insert(note); Log.d("DaoExample", "Inserted new note, ID: " + note.getId());
noteDao.deleteByKey(id);
数据模型与代码生成
一般情况下,你使用GreeDao需要创建两个项目,一个是你的Android项目添加greendao.jar依赖,另外一个是普通的java se工程.添加greendao-generator.jar与freemarker.jar依赖。后者用于数据模型domain,dao,DaoMaster等代码的生成。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");Schema代表你的数据库,Entity代表你要生成的数据表结构。向Entity添加属性相当于添加列结构。
模型化实体Entities
Schema:
Schema schema = new Schema(1, "de.greenrobot.daoexample");//第一个参数代表版本,第二个参数代表要生成代码的包名默认情况下Dao类与Test类是在一个包下,如果你想分开他们,可以这样:
schema.setDefaultJavaPackageTest("de.greenrobot.daoexample.test"); schema.setDefaultJavaPackageDao("de.greenrobot.daoexample.dao");Schema对于Entity还有两个默认的标志Flags可以设置:
schema2.enableKeepSectionsByDefault(); schema2.enableActiveEntitiesByDefault();
Entity
Schema可以用于添加Entity:Entity user = schema.addEntity("User");为实体添加属性:
user.addIdProperty(); user.addStringProperty("name"); user.addStringProperty("password"); user.addIntProperty("yearOfBirth");
为实体添加主键
user.addIdProperty().primaryKey().autoIncrement();
关于Java属性与对应的数据库表名列名命名的规则与区别
Java中属性一般采用驼峰命名法。表名/domain类名 | 属性/列I | 属性/列II | |
Java | User | name | myName |
数据库 | USER | NAME | MY_NAME |
Inheritance, Interfaces, and Serializable
对于继承:(不推荐)myEntity.setSuperclass("MyCommonBehavior");推荐使用接口将一些公共的属性提取出来。
entityA.implementsInterface("C"); entityB.implementsInterface("C"); entityB.implementsSerializable();
触发代码生成
DaoGenerator daoGenerator = new DaoGenerator(); daoGenerator.generateAll(schema, "../MyProject/src-gen");还可以指定第三个参数来将test代码分开。
Keep sections片段
为了允许添加自定义代码到你的实体当中,greendao使用"keep sections"来允许你添加,但是要先调用Schema的enableKeepSectionsByDefault()或者setHasKeepSections(true) .一旦开启,这些代码将会保留进入实体当中。// KEEP INCLUDES - put your custom includes here // KEEP INCLUDES END ... // KEEP FIELDS - put your custom fields here // KEEP FIELDS END ... // KEEP METHODS - put your custom methods here // KEEP METHODS END不要删除这些注释。
Sessions
DaoMaster and DaoSession
daoMaster = new DaoMaster(db); daoSession = daoMaster.newSession(); noteDao = daoSession.getNoteDao();注意数据库连接是属于DaoMaster的,每个Session都需要分配内存,对于实体,greendao采用对应的session缓存cache
Identity scope and session “cache”
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。