GreenDao简明教程(实体建模,Modeling)

这是一篇关于greenDao的简明使用教程(其实就是官网tutorial的一个大概的翻译)。

一共有四篇,链接如下:

1.基本介绍

2.实体建模

3.查询

4.关系


实体建模


跟所有的orm一样,在使用greendao的时候,其实第一步你应该做的就是设计好能反映你application中数据存储结构的实体建模。greendao会根据这些model自动生成DAO代码到你的工程中。

在greendao中定义代码使用的是普通的java代码。下面我们用一幅图来说明greendao中定义model都要定义哪些东西:



Schema

Entity从属于Schema,一般来说需要先定义Schema,在schema的构造函数中需要制定两个参数:schema的版本号,还有生成代码整体的包名(包括entities,DAOs,和JUnit test代码)。

Schema schema = new Schema(1"de.greenrobot.daoexample");


如果你想让生成的test代码有独立的命名空间的话,这样做:

schema.setDefaultJavaPackageTest("de.greenrobot.daoexample.test");

schema.setDefaultJavaPackageDao("de.greenrobot.daoexample.dao”);


schema另外支持对entities的两个默认开关的修改,这两个开关控制entities是否是active的,还有entities是否采用了用户编辑区域(keep sections)

schema2.enableKeepSectionsByDefault();

schema2.enableActiveEntitiesByDefault();


Entities

一旦创建了Schema,下面就可以使用它来添加Entities了。

Entity user = schema.addEntity("User”);


Entity可以修改一些设置,但最重要的是可以entity中添加property。就像下面这样:

user.addIdProperty();

user.addStringProperty("name");

user.addStringProperty("password");

user.addIntProperty("yearOfBirth”);


除了这些属性,你还可以向entity添加to-one,to-many关系。



Properties and primary keys

之前的例子展示了如何为entity添加一个property,事实上addXXXProperty方法返回一个PropertyBuilder对象。返回的PropertyBuilder对象可以用来设置property。比如,你可以通过返回对象的columnName方法来重新设置该property在数据库中存储的字段名。如果要使用property对象添加索引(indices)或者关系(relations),可以通过调用PropertyBuilder上的getProperty方法获取。


目前的主键限制(primary key (PK) restrictions):目前Entity必须有一个long型的property作为主键,这个也是Android和sqlite中推荐的做法。


Defaults

GreenDao对各种操作和对象提供了合理的默认值。举个例子,greendao生成的database的table和column名称都源自entity和property的名称。与JAVA中的camel命名规则不同,默认的database名称采用全大写加下划线分割的命名规则,比如一个叫做creationDate的property,在databse的colum中默认就变成了CREATION_DATE。


Triggering generation

一旦你的entity schema准备好了,你就可以触发生成Entity和DAOs代码了。在generator project(普通的java工程,需要一个静态的main方法),在main方法中初始化一个DaoGenerator,并调用generateAll方法。像下面这样:

DaoGenerator daoGenerator = new DaoGenerator();

daoGenerator.generateAll(schema, "../MyProject/src-gen”);

在这里你只需要指定用来生成代码的entity schema和代码输出目录(这个目录通常应该是你的Android project目录)。


Keep sections

Entity的生成代码在每次生成的时候都会覆盖,通过使用“keep sections”可以添加用户自己的代码,并确保不会被覆盖。首先激活这个功能需要在schema中调用enableKeepSectionsByDefault() ,或者在entity中调用setHasKeepSections(true) 。一旦激活,keep sections将会在生成的entity代码中被添加。像下面这个样子:

// 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


现在你可以把你自己的代码放在KEEP […]和KEEP [...] END中间,注意不要修改keep的注释。

尽管如此,还是建议另外保存一下这部分的代码,以备万一。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值