GreenDao简介
GreenDao是一个将对象映射到SQLite数据库中的轻量且快速的ORM数据库框架,本文将讲解如何集成GreenDao3.0环境,如何使用GreenDao自动生成代码及注解的使用。
GreenDao官网
GreenDao GitHub
GreenDao3.0优势
GreenDao相较于ORMLite等其他数据库框架有以下优势:
1. 一个精简的库
2. 性能最大化
3. 内存开销最小化
4. 易于使用的 APIs
5. 对 Android 进行高度优化
而GreenDao3.0的版本主要使用注解方式定义实体类,通过gradle插件生成相应的代码。相较于3.0之前的版本集成步骤更为便捷,使用起来也更为简单。本文使用的版本为3.2.0。
集成
项目下build.gradle
GitHub中提示添加maven仓库,但是AndroidStudio项目已经默认包含了jcenter仓库,而jcenter仓库就是maven仓库的一个分支,因此不需要再添加仓库,直接添加classPath即可。
app下build.gradle
在app下build.gradle文件中我们需要声明GreenDao插件,及配置GreenDao生成dao路径等信息,声明GreenDao依赖。
初始化实体
编写实体类
集成好使用环境后需要初始化实体,首先编写实体类。这里演示使用公司Company与雇员Employer实体例子。使用@Entity注解。莫急,注解机制在之后小节有详细讲解。
|
|
生成代码
实体类与注解添加完毕后编译项目,就会为所有带注解的实体生成Dao文件,及DaoMaster与DaoSession。若未在build.gradle中配置过则默认生成目录为build/generated/source。若配置过则生成在配置的目录下。

注解
3.0之后最大的不同就是使用的注解来配置实体类属性,便捷且灵活。下面来看一下各类注解:
实体类注解
|
|
- @Entity:用于标识当前实体需要GreenDao生成代码。
- schema:项目中存在多个Schema时,表明当前实体属于哪个Schema。
- active:标记实体是否处于活动状态,活动状态才支持更新删除刷新等操作。
- nameInDb:存储在数据库中的表名,不写默认与类名一致。
- indexes:定义索引,可跨越多个列。
- createInDb:标记创建数据库表,若有多个实体关联此表可设为false避免重复创建,默认为true。
属性注解
- @Id :主键Long型,可以通过
@Id(autoincrement = true)
设置自增长。 - @Property:设置一个非默认关系映射所对应的列名,默认是的使用字段名例如
@Property (nameInDb="name")
。 - @NotNul:设置数据库表当前列不能为空。
- @OrderBy:指定排序。
- @Transient:添加此标记之后不会生成数据库表的列。
- @Generated:为build之后GreenDao自动生成的注解,为防止重复,每一块代码生成后会加个hash作为标记。
索引注解
|
|
- @Index:创建索引,通过设置name设置别名,设置unique添加约束。
- @Unique:添加唯一约束与(unique = true)作用相同。
关系注解
- @ToOne:定义与另一实体一对一的关联。
|
|
- @ToMany:定义与多个实体对象一对多的关联,referencedJoinProperty为外键约束。
- @JoinProperty:标明目标属性的源属性。
- @JoinEntity:建立表连接关系。
|
|
总结
到此,这一篇关于GreenDao3.0的集成与注解就讲解完毕了,欢迎参看下一篇关于如何使用GreenDao3.0对数据库进行增删改查。
技术渣一枚,有写的不对的地方欢迎大神们留言指正,有什么疑惑或者不懂的地方也可以在我Github上GreenDaoDemo项目的Issues中提出,我会及时解答。附上GreenDaoDemo的地址:
GreenDaoDemo