GreenDAO 3.x官方文档 — Android ORM框架(二)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/KevinDGK/article/details/52084046

GreenDAO 3.x — Android ORM框架(二)

内容介绍:GreenDAO框架的介绍和使用
最新更新时间:2016/8/1
官网:http://greenrobot.org/greendao/
版本:V3.0.1
说明:主要内容均翻译自官网最新的开发文档
博客地址:http://blog.csdn.net/kevindgk/article/details/51833707
版权声明:本文为原创文章,未经允许不得转载

前言

greenDAO3.x使用注解来定义模式和实体。相比之下,以前greenDAO版本要求开发人员有一个单独的分离的Java项目来构造数据库帮助类。现在你仍然可以这么做,然而greenDAO3.x允许使用注解来自由的创建模式和实体。

例如:

这个@Entity注解就会将Java类”User”转化成一个表的实体类,当然也会指导greendao去生成必要的代码,例如DAOs,代码是在build项目的时候生成的。

添加依赖和插件


注:请去官方github使用最新的版本
现在,当你build项目的时候,就会执行生成greendao代码。在Android Studio中,当你选择build->make project的时候,也会触发。默认情况下,在build/generated/source/greendao目录下生成代码,将这个目录添加为gradle build时的资源目录。
温馨提示:如果你觉得生成的代码有错误,请首先检查build/generated/source/greendao目录。

Gradle插件配置

我们可以使用gradle插件来进行生成项目,不需要多余的配置。

在greendao节点下可以进行的配置:

  • schemaVersion:当前数据库版本,该参数将会被 ***OpenHelper这个类来使用在模式版本间迁移。如果你想改变你的实体类/数据库版本,这个数值应该增长。
  • daoPackage:生成的dao类存放的包名;
  • targetGenDir:生成代码的存放地址;

实体类和注解

greenDAO3使用了一些注解,有些灵感来自JPA(Java Persistence API)。然而,我们简化和调整greenDAO细节。

  • @Entity 类注解
    就像你在例子中看到的一样,@Entity这个注解将这个Java类变成greendao的持久化类。通常情况下,可以直接使用而不配置任何的参数,当然你也可以配置下面的参数:

  • @Id,@Property等基础属性注解

    • @Id:该注解选择一个long类型的属性作为实体类的ID。在数据库里面,它就是主键。这个参数 autoincrement 是一个标记,标志着ID一直都是增长的,从不适用旧值;
    • @Property:使用该属性定义一个非默认的列名,该变量和该列进行映射。如果缺少,greendao会使用这个变量名来命名数据库的列名(全部大写,并且使用下划线来代替驼峰命名法,eg:customName会变成CUSTOM_NAME)。
    • NotNull:非空,通常情况下修饰基础类型,比如long,int,short,byte,当然也可以是包装类:Long,Integer,Short,Byte。
    • @Transient:表示该属性不是持久化的,仅仅作为临时变量使用。
  • @Index,@Unique 索引注解

    • @Index 使用该属性来创建一个数据库索引对应的数据库列。
      name:重命名列名称,不适用默认的;
      unique:索引添加一个唯一约束,强制所有的索引都是唯一的;
    • @Unique 给数据库的列添加一个唯一约束,注意,SQLite也会隐式地创建一个索引。
  • 关系注解:@ToOne, @ToMany
    @ToOne:顶一个与另一个实体(一个实体对象)的关系。Property使用该注解表示持有另一个实体类的引用。在内部,需要有一个附加的属性来指向目标类的ID,这个也是joinProperty参数的数值。如果该参数缺省,会自动生成一列来持有这个key(目标类的ID)。

@ToMany
定义一个实体类集合的映射,使用这个属性可以表示一个目标实体类的集合。这个目标实体类必须有一个或者多个属性指向原始的类(拥有@Tomany属性的类)。这里有三种使用的可能:


生成代码

在greenDao3中,实体类是开发者创建和编辑的。然而,在代码生成过程中greenDAO可能增加实体的源代码。当它这么做的时候,它将一个@generated注释添加到生成的方法和字段上来通知开发人员,并防止任何代码损失。在大多数情况下,你都不需要碰触@Generated注解修饰的代码。
作为一个预先提醒,如果生成的代码被手动修改了,那么greendao不会覆盖已经存在的代码,并且给出错误提示信息。

就像错误信息提示的那样,有两种方法可以解决这个问题:

  • @Generated:使用该注解恢复代码。或者,你也可以完全删除更改的构造函数或方法。他们将再下一次build的时候构建。
  • @Keep:使用keep注解代替generated注解。这将告诉greenDAO从未接触带注释的代码。请记住,您的更改可能会打破实体之间的合同和其他greenDAO。

猜你喜欢

转载自blog.csdn.net/KevinDGK/article/details/52084046