由于项目新加入离线功能,因此需要本地数据库,好久没有使用数据库了,就比较各个数据库的优缺点,最终选择了GreenDao。虽说集成时候有些麻烦和一些坑,但是解决问题后,这个数据库还是挺好用的。
一、阅读官方文档对集成还是很有帮助的,GreenDAO的官方文档:http://greenrobot.org/greendao/documentation/
二、添加依赖
1、在项目的Project的build.gradle里的builddscript添加配置mavenCental(),
在dependencies 里添加
classpath'org.greenrobot:greendao-gradle-plugin:3.2.2'
buildscript { repositories { jcenter() mavenCentral() // add repository } dependencies { classpath 'com.android.tools.build:gradle:2.2.3' classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin } }2、在Module:app 里的build.gradle里添加
apply plugin: 'com.android.application' apply plugin: 'org.greenrobot.greendao' // apply plugin3、 Module:app 里的build.gradle下
的
dependencies 里添加
dependencies {
compile 'org.greenrobot:greendao:3.2.2'
}
4、 Module:app 里的build.gradle下
的
android 里添加
greendao { schemaVersion 1//数据库版本号 daoPackage 'com.yushiji.greendao.gen'//设置DaoMaster、DaoSession、Dao包名 targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 //targetGenDirTest:设置生成单元测试目录 //generateTests:设置自动生成单元测试用例 }三、创建实体类即创建表
在实体类 上方 写 上 @Entity 即可!然后makeProject就会自动生成set get 方法。
@Entity public class User { @Id(autoincrement = true) private Long id; private String name; private String age; private String sex; private String salary; }通过
@Entity
那么这个类便成了数据库中的一张表,而
@Id
此表明这是表的主键。当我们build工程之后我们会发现,GreenDAO替我们默认生成了:
四、GreenDao中的注释
1、 @Entity 定义实体
@nameInDb 在数据库中的名字,如不写则为实体中类名
@indexes 索引
@createInDb 是否创建表,默认为true,false时不创建
@schema 指定架构名称为实体
@active 无论是更新生成都刷新
2、 @Id 主键 Long型,可以通过@Id(autoincrement = true)设置自增长
3、@NotNull 不为null
4、@Unique 唯一约束
5、 @ToMany 一对多
6、 @OrderBy 排序
7、@ToOne 一对一
8、@Transient 不存储在数据库中
9、 @generated 由greendao产生的构造函数或方法
主键Id的类型和注释在使用过程中还遇到过坑,下篇文章会介绍一下。
更多的操作和更高级的使用,大家可以根据需要去查找资料或者阅读官网,本文有任何问题欢迎大家指正批评。