Android Studio 中引入 greenDAO

存篇日记先,记录下自己操作的过程,以防下次忘记。

首先,在 Android Studio 项目下新建一个类型为 Java Library 的 Module,Library 名随意, 如:daogenerator;包名随意,如:com.shingchi;类名随意,如:MyDaoGenerator。

接着,编辑该 Module 的 build.gradle 文件,给它添加上以下依赖:

apply plugin: 'java'

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])

// 所添加进来的依赖
compile 'de.greenrobot:greendao:2.0.0'
compile 'de.greenrobot:greendao-generator:2.0.0'
}

然后,回到 Module 的类文件中(如:MyDaoGenerator.java),编写进以下代码:

package com.shingchi;

import de.greenrobot.daogenerator.DaoGenerator;
import de.greenrobot.daogenerator.Entity;
import de.greenrobot.daogenerator.Schema;

public class MyDaoGenerator {

// 要生成的 Dao 类所在包的路径
private static String daoPath = "com.shingchi.phenix.data.dao";

// 要生成的 Entity 类所在包的路径
private static String entityPath = "com.shingchi.phenix.data.entity";

// 设置要生成 Dao 文件的目标项目的路径,ProjectName 为 Android app 项目名
private static String projectPath = "../ProjectName/app/src/main/java";

// main
public static void main(String[] args) throws Exception {

// 参数一用来更新数据库版本号,参数二为要生成的 Dao 类所在包的路径
Schema schema = new Schema(1, daoPath);

// 添加 City 表
addCity(schema);

// 开始生成 Dao 文件
new DaoGenerator().generateAll(schema, projectPath);
}

/**
* 添加 City 表
*/

private static void addCity(Schema schema) {
// Entity 类保存名为 CityEntity
Entity city = schema.addEntity("CityEntity");

// 设置表名为 City,不写这句默认表名为 City_Entity
city.setTableName("City");

// Dao 类保存名为 CityDao,不写这句默认生成 CityEntityDao
city.setClassNameDao("CityDao");

// 设置 Entity 类保存目录,不写这句默认生成和 Dao 类保存在同一目录
city.setJavaPackage(entityPath);

// 添加表需要的字段
city.addIdProperty().autoincrement();
city.addStringProperty("areaId");
city.addStringProperty("name");
city.addStringProperty("namePinyin");
city.addStringProperty("prov");
city.addStringProperty("provPinyin");

// 保留自定义代码
city.setHasKeepSections(true);
}
}

最后,运行该 Module,静待文件生成。

参考地址:
http://greenrobot.org/greendao/documentation/generator
https://github.com/greenrobot/greenDAO/tree/V2.2.1/DaoExampleGenerator
https://github.com/greenrobot/greenDAO/tree/V2.2.1/DaoExample