码迷,mamicode.com
首页 > 移动开发 > 详细

超详细的GreenDao配置与使用,附带Android Studio基本使用方法

时间:2015-07-27 16:25:55      阅读:370      评论:0      收藏:0      [点我收藏+]

标签:android   greendao   orm数据库框架   

这篇文章作为一个Android数据库ORM框架学习的一个开始,我的目标是了解各个ORM框架的特点,在不同的项目中选择最好的方法。关于GreenDao的优点和缺点在SQLite数据库框架ORMLite与GreenDao的简单比较 这篇文章中做了很好的介绍,我就不再重复介绍了。
声明:本篇文章的Android Studio部分是翻译自Tutorial - greenDAO from scratch - Part 1,这篇文章不仅对GreenDao的使用做了非常好的介绍,而且对于Android Studio使用来说也会有很大帮助。

1.数据库表的模型

Person表

Person
id
name
comment

Lease表

Lease
item
comment
leasedate
returndate

2.Android Studio篇

2.1 新建项目

打开我们的Android Studio,如果已经有已经打开的项目了,在File–>”Close Project”关闭当前项目。在右边小窗口选择”Start a new Android Studio project”
技术分享
接下来,完善其他信息
技术分享
接下来选择 “Target Android Devices”,由于这篇教程只是为了介绍GreenDao的使用,所以直接选择了API21
技术分享
AS想为我们创建一个默认Activity,我们不需要,所以选择”Add No Activity”
技术分享
项目创建完毕后,看起来光秃秃的,我们甚至看不见我们的项目结构,但是我们点击一下”Project”
技术分享
我们看到的视图树不是我们项目文件结构的视图树,所以我们选择”Android-> Project”
技术分享

2.2 下载jar包

前面的准备工作已经做完,接下来下载jar包,我们一共需要3个jar包
1.greendao.jar
2.greendao-generator.jar
3.freemarker.jar
下载freemarker.jar时选择这个
技术分享

2.3 调整项目结构

GreenDao可以通过一个generator直接帮助我们生成数据模型,这个generator是一个java项目,将他从我们的工程项目中分离出来,所以我们需要新建一个”module”。右键”LeaseGreenDao”选择”New->Module”
技术分享
选择”Java Library”
技术分享
完善其他信息
技术分享

2.4 导入jar包

现在我们将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”那个小黄按钮。

2.5 创建数据模型

现在变得有意思了,我们开始创建模型!现在打开”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");


    }
}

2.6 生成类

接下来的步骤就很少了,我们只需要点击Gradle,然后运行leasedaogenerator
如果没有错误的话,你会看到如下信息

Processed 2 entities in 185ms

BUILD SUCCESSFUL

Total time: 4.1 secs
23:11:50: External task execution finished ‘run‘.

在我们app目录下,我们可以看到自动生成的类
技术分享

3. eclipse篇

有了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基本使用方法

标签:android   greendao   orm数据库框架   

原文地址:http://blog.csdn.net/nugongahou110/article/details/47085459

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!