这篇文章作为一个Android数据库ORM框架学习的一个开始,我的目标是了解各个ORM框架的特点,在不同的项目中选择最好的方法。关于GreenDao的优点和缺点在SQLite数据库框架ORMLite与GreenDao的简单比较 这篇文章中做了很好的介绍,我就不再重复介绍了。
声明:本篇文章的Android Studio部分是翻译自Tutorial - greenDAO from scratch - Part 1,这篇文章不仅对GreenDao的使用做了非常好的介绍,而且对于Android Studio使用来说也会有很大帮助。
Person表
Person |
---|
id |
name |
comment |
Lease表
Lease |
---|
item |
comment |
leasedate |
returndate |
打开我们的Android Studio,如果已经有已经打开的项目了,在File–>”Close Project”关闭当前项目。在右边小窗口选择”Start a new Android Studio project”
接下来,完善其他信息
接下来选择 “Target Android Devices”,由于这篇教程只是为了介绍GreenDao的使用,所以直接选择了API21
AS想为我们创建一个默认Activity,我们不需要,所以选择”Add No Activity”
项目创建完毕后,看起来光秃秃的,我们甚至看不见我们的项目结构,但是我们点击一下”Project”
我们看到的视图树不是我们项目文件结构的视图树,所以我们选择”Android-> Project”
前面的准备工作已经做完,接下来下载jar包,我们一共需要3个jar包
1.greendao.jar
2.greendao-generator.jar
3.freemarker.jar
下载freemarker.jar时选择这个
GreenDao可以通过一个generator直接帮助我们生成数据模型,这个generator是一个java项目,将他从我们的工程项目中分离出来,所以我们需要新建一个”module”。右键”LeaseGreenDao”选择”New->Module”
选择”Java Library”
完善其他信息
现在我们将greendao-generator.jar和freemarker.jar复制粘贴到刚刚我们新建的LeaseDaoGenerator的libs文件夹下
首先,我们得让Gradle知道我们的libs,所以我们进入到”build.gradle”的”dependencies”下插入如下代码:
compile files(‘libs/greendao-generator-1.3.1.jar‘)
compile files(‘libs/freemarker-2.3.22.jar‘)
注意是填写你下载的jar包的名字和版本信息
前面提到过,这个LeaseDaoGenerator是一个独立的工程,所以我们需要在最开始的部分加上如下代码:
apply plugin: ‘application‘
我们得让Gradle知道要启动的类名
mainClassName = "com.devteam83.tutorials.leasegreendao.LeaseDaoGenerator"
LeaseDaoGenerator的build.gradle的完整代码如下:
apply plugin: ‘application‘
apply plugin: ‘java‘
mainClassName = "com.devteam83.tutorials.leasegreendao.LeaseDaoGenerator"
dependencies {
compile fileTree(dir: ‘libs‘, include: [‘*.jar‘])
compile files(‘libs/greendao-generator-1.3.1.jar‘)
compile files(‘libs/freemarker-2.3‘2.jar``````
)
}
别忘了点击”Sync Now”那个小黄按钮。
现在变得有意思了,我们开始创建模型!现在打开”LeaseDaoGenerator” 并且加入如下代码:
public static void main(String args[]) throws Exception {
Schema schema = new Schema(1, "com.devteam83.tutorials.leasegreendao.model");
}
我们创建了一个“Schema”,第一个参数是数据库的版本号,第二个参数是我们要生成的数据模型所在的包名。
接下来,我们开始创建实体
Entity person = schema.addEntity("Person");
person.addIdProperty();
person.addStringProperty("name");
person.addStringProperty("comment");
Entity lease = schema.addEntity("Lease");
lease.addIdProperty();
lease.addStringProperty("item");
lease.addStringProperty("comment");
lease.addLongProperty("leasedate");
lease.addLongProperty("returndate");
我认为这是相当直观的,但是这会创建出两个分离的实体,他们之间没有任何关系,这是不够的,我们希望一个lease属于一个person,所以我们要添加如下代码:
Property personId = lease.addLongProperty("personId").getProperty();
lease.addToOne(person, personId);
我们保存了一个personId这个外键,并且通过调用addToOne()方法实现了1:1的关系
另一方面,我们希望一个person可以有多个lease,所以我们要添加如下代码:
ToMany personToLease = person.addToMany(lease, personId);
personToLease.setName("leases");
通过调用addToMany()方法实现了1:n的关系。setName()方法是给这个关系起一个名字,默认的话是用的目标实体的名字,即lease,但是有时候使用默认名字的话会引起冲突,所以我们可以自定义名字,即leases。
最后一句,将我们建好的model生成类
new DaoGenerator().generateAll(schema, "../app/src/main/java");
第一个参数是“Schema”,第二个参数为将生成的数据模型输出到指定的项目下的src文件夹下。
完整代码如下:
public class LeaseDaoGenerator {
public static void main(String args[]) throws Exception {
Schema schema = new Schema(1, "com.devteam83.tutorials.leasegreendao.model");
Entity person = schema.addEntity("Person");
person.addIdProperty();
person.addStringProperty("name");
person.addStringProperty("comment");
Entity lease = schema.addEntity("Lease");
lease.addIdProperty();
lease.addStringProperty("item");
lease.addStringProperty("comment");
lease.addLongProperty("leasedate");
lease.addLongProperty("returndate");
Property personId = lease.addLongProperty("personId").getProperty();
lease.addToOne(person, personId);
ToMany personToLease = person.addToMany(lease, personId);
personToLease.setName("leases");
new DaoGenerator().generateAll(schema, "../app/src/main/java");
}
}
接下来的步骤就很少了,我们只需要点击Gradle,然后运行leasedaogenerator
如果没有错误的话,你会看到如下信息
Processed 2 entities in 185ms
BUILD SUCCESSFUL
Total time: 4.1 secs
23:11:50: External task execution finished ‘run‘.
在我们app目录下,我们可以看到自动生成的类
有了Android Studio的基础,eclipse就很简单了,我就不做过多的解释了
新建一个java项目,起名为DaoExampleGenerator
右键项目->Build Path->Configure Build Path 在Libraries中选择Add External JARs… 将greendao-generator.jar和freemarker.jar添加进来,点击OK
接下来在ExampleDaoGenerator.java中添加如下代码
public class ExampleDaoGenerator {
public static void main(String[] args) throws Exception {
Schema schema = new Schema(1, "com.example.daoexample.model");
Entity person = schema.addEntity("Person");
person.addIdProperty();
person.addStringProperty("name");
person.addStringProperty("comment");
Entity lease = schema.addEntity("Lease");
lease.addIdProperty();
lease.addStringProperty("item");
lease.addStringProperty("comment");
lease.addLongProperty("leasedate");
lease.addLongProperty("returndate");
Property personId = lease.addLongProperty("personId").getProperty();
lease.addToOne(person, personId);
ToMany personToLease = person.addToMany(lease, personId);
personToLease.setName("leases");
new DaoGenerator().generateAll(schema, "../DaoExample/s
rc");
}
}
新建一个DaoExample的Android项目,将greendao.jar加入
运行DaoExampleGenerator 之后在DaoExample中我们可以看到自动生成的类
版权声明:欢迎转载,转载请注明出处http://blog.csdn.net/nugongahou110
超详细的GreenDao配置与使用,附带Android Studio基本使用方法
原文地址:http://blog.csdn.net/nugongahou110/article/details/47085459