GreenDao的两种创建数据库框架方法
(1)添加GreenDao依赖包和插件,建立实体类,如userBean,点击菜单栏的【build】键中的【make peoject】自动生成三个GreenDao文件,即DaoMaster,DaoSession,userBeanDao.
(2)用MyDaoGenerator创建数据库框架,这也是我下面详细说明的方法,这是GreenDao的旧版生成器(旧版生成器官方文档链接)。在大多数情况下,我们建议使用新的Gradle插件,即方法(1),但是目前只有MyDaoGenerator支持某些高级功能,例如多模式(schemas)。我们使用多模式来创建数据表非常方便,尤其在项目中使用这种方式来建立GreenDao框架,使的开发人员使用GreenDao建表的学习成本非常低,可以说看一眼就会建表了,自动生成beans和3个DAO文件,不信你往下看。用MyDaoGenerator构建GreenDao的缺点就是,这个版本已经至少3年没更新了,不过不影响使用,我们项目中就是使用这种方法构建GreenDao框架的。
用MyDaoGenerator构建GreenDao框架
(1)创建DAO文件的生成路径
在【project】视图下的./app/src/main/路径下新建一个名为【java-gen】的java型文件夹,注意!!!一定不能随便建一个任意类型的文件夹,否则后面会出错,我就被坑了!
【step1:】
【step2:】
创建【java-gen】文件夹成功后,打开app下的build.gradle你会发现多了一行代码,如下图所示
这句话的意思是把【java-gen】下的.java文件也include到src路径中。我们继续在app/build.gradle的dependencies中添加GreenDao依赖库,即:implementation ‘de.greenrobot:greendao:1.3.7’,添加后如下图所示:
(2)下载并配置GreenDao的框架生成器
[下载链接](https://github.com/SureCase/GreenDaoForAndroidStudio),下载完解压,找到MyDaoGenerator文件夹,把它复制到到你的项目的根目录下,跟【app】平级,如下图所示:,压缩包中的其他文件都不需要。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190109094250704.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0plc3NpZXNDQw==,size_16,color_FFFFFF,t_70)
把MyDaoGenerator配置到项目中,打开根目录下的【settings.gradle】,并查看编辑窗体最右侧的【Gradle】你会发现当前工程中只存在【app】这个应用程序,如下图:
我们需要把【MyDaoGenerator】也添加到到工程中,即:
include ':app',':MyDaoGenerator'
添加完后,点击sync同步,就报错了,报错如下:
错误提示输出路径错误,点击蓝色字体【Open File】,进入到MyDaoGenerator文件下的【build.gradle】,把路径改为我们之前建好的路径,还记得【java-gen】吗?没错就是它,之所以要改成src/main/java-gen,当然是方便我们调用数据库啦。
mainClassName = "pl.surecase.eu.MyDaoGenerator"
// edit output direction
// outputDir = "../DaoExample/src/main/java-gen"
outputDir = "../app/src/main/java-gen"
改完后点sync发现还报相同的错误,加一个【def】设置为默认路径就好了,再sync一下,就不会再报错了。
mainClassName = "pl.surecase.eu.MyDaoGenerator"
// edit output direction
// outputDir = "../DaoExample/src/main/java-gen"
//设置为默认路径
def outputDir = "../app/src/main/java-gen"
到这为止,我们的GreenDao框架算是配置完了,你可以点开窗体最右侧的Gradle看一下,发现MyDaoGenerator已经include到工程中了。
打开MyDaoGenerator,如下图
修改里面的代码,建一个user表和一个book表:
package pl.surecase.eu;
import de.greenrobot.daogenerator.DaoGenerator;
import de.greenrobot.daogenerator.Entity;
import de.greenrobot.daogenerator.Schema;
/**
*
*/
public class MyDaoGenerator {
public static void main(String args[]) throws Exception {
//初始化数据库
//第一个参数是数据库版本号,第二个参数是为你生成的bean类所放的文件夹名
Schema schema = new Schema(1, "beans");
//设置生成的三个java文件的目录
schema.setDefaultJavaPackageDao("daos");
initUserBean(schema);
initBookBean(schema);
//第二个参数是输出路径,由于已经在MyDaoGrenerator中的build.gradle中配置过了,所以这里不再配置,
new DaoGenerator().generateAll(schema, args[0]);
//配置也可以
//new DaoGenerator().generateAll(schema, "../app/src/main/java-gen");
}
/**
* 建User表
* @param schema
*/
private static void initUserBean(Schema schema){
Entity entity=schema.addEntity("UserBean");
//添加id字段,设置为主键,自增长
entity.addIdProperty().primaryKey().autoincrement();
entity.addStringProperty("name");
entity.addIntProperty("age");
entity.addStringProperty("sex");
entity.addStringProperty("tel");
}
/**
* 建book表
* @param schema
*/
private static void initBookBean(Schema schema){
Entity entity=schema.addEntity("BookBean");
entity.addIdProperty().primaryKey().autoincrement();
entity.addStringProperty("author");
entity.addStringProperty(" publisher");
entity.addDoubleProperty("price");
entity.addBooleanProperty("lended");
entity.addDateProperty("lendDate");
entity.addDateProperty("returnDate");
}
}
点击【run】自动生成been和dao。
运次成功后打开我们之间建的【java-gen】,你会发现beans和daos两个文件夹已经自动生成我们所需的文件。如下图:
以后再需要建表,就直接在Mygenerator中写建表方法,run一下就行,配置什么都不用管了是不是很简单。