1、首先导入相关包:
compile 'org.greenrobot:greendao:3.2.2'
compile 'org.greenrobot:greendao-generator:3.2.2'
2、在build.gradle中配置
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'
}
}
allprojects {
repositories {
jcenter()
mavenCentral() // add GreenDao repository
}
}
3、自定义路径
greendao {
schemaVersion 1
daoPackage ‘com.anye.greendao.gen’
targetGenDir ‘src/main/java’
}
属性介绍:
schemaVersion–> 指定数据库schema版本号,迁移等操作会用到;
daoPackage –> dao的包名,包名默认是entity所在的包;
targetGenDir –> 生成数据库文件的目录;
或者在根目录下创建一个java-gen 并添加仓库
sourceSets {
main {
java.srcDirs = ['src/main/java', 'src/main/java-gen']
}
}
接着创建一个java 的module执行以下代码
public static void main(String[] args) {
//生成数据库的实体类,还有版本号
Schema schema = new Schema(1, "com.student.entity");
//指定dao
schema.setDefaultJavaPackageDao("com.student.dao");
try {
//指定路径
new DaoGenerator().generateAll(schema, "上面创建的java-gen目录");
} catch (Exception e) {
e.printStackTrace();
}
}
全局配置,在application中初始化
/**
* 设置greenDao
*/
private void setDatabase() {
// 通过 DaoMaster 的内部类 DevOpenHelper,你可以得到一个便利的 SQLiteOpenHelper 对象。
// 可能你已经注意到了,你并不需要去编写「CREATE TABLE」这样的 SQL 语句,因为 greenDAO 已经帮你做了。
// 注意:默认的 DaoMaster.DevOpenHelper 会在数据库升级时,删除所有的表,意味着这将导致数据的丢失。
// 所以,在正式的项目中,你还应该做一层封装,来实现数据库的安全升级。
mHelper = new DaoMaster.DevOpenHelper(this, "notes-db", null);
db = mHelper.getWritableDatabase();
// 注意:该数据库连接属于 DaoMaster,所以多个 Session 指的是相同的数据库连接。
mDaoMaster = new DaoMaster(db);
mDaoSession = mDaoMaster.newSession();
}
public DaoSession getDaoSession() {
return mDaoSession;
}
public SQLiteDatabase getDb() {
return db;
}
使用注解
(一) @Entity 定义实体
@nameInDb 在数据库中的名字,如不写则为实体中类名
@indexes 索引
@createInDb 是否创建表,默认为true,false时不创建
@schema 指定架构名称为实体
@active 无论是更新生成都刷新
(二) @Id
(三) @NotNull 不为null
(四) @Unique 唯一约束
(五) @ToMany 一对多
(六) @OrderBy 排序
(七) @ToOne 一对一
(八) @Transient 不存储在数据库中
(九) @generated 由greendao产生的构造函数或方法