您的位置:首页 > 数据库

数据库框架之Greendao从无到有(一)

2016-03-03 09:20 387 查看
前一段时间,我们正在寻找一个Android数据库映射的框架,我们最终找到Greendao。但是我们没有找到一个完整的教程,都是些零零散散的(所以它不是从零开始!)由于这个原因,在我们认为一个好的教程,包括所有的步骤和不依赖于准备好的项目,所以我们得自己动手去写个教程。

所以我们的教程是:greendao从无到有–没有库,没有在线的依赖。在什么都没有的情况下,一层层搭建出来。

请注意,我们保持简短短、简便的教程,我们将不能涵盖所有的基础知识(如安装Android Studio)



在这个小教程,我们创建一个应用程序来管理你的东西借给别人。

完成这一系列我们将学会:

GreenDao数据模型基础

列表recyclerview中显示我们的数据

增查改删(CRUD)

以及增查改删(CRUD)过程中遇到的错误

第一部分内容

1.数据模型

2.创建工程

3.下载依赖包

4.调整项目结构

5.插入jar包

6.创建数据模型

7.生成的类

数据模型

数据模型是由唯一的实体:人和租赁。我们不管理项目–他们是输入文本时借贷的东西。

Person

id

name

comment

Lease(租赁)

id

item

comment(评论)

leasedate(租赁日期)

returndate(返还日期)

创建项目

让我们打开AndroidStudio。万一已经打开的项目,请关闭它,通过菜单选择“File” -> “Close Project”.。

在小窗口的右边请选择“Start a new Android Studio project”开始:



在那之后,Android Studio要求项目名称,填写“leasegreendao”,以及我们公司的名字。请注意,公司名称也作为包名,所以我决定使用”tutorials.devteam83 .com”。

你应该填写自己的域名(+分包的名称),但请记住调整这后一阶段。



在下面的对话框中Android Studio要求”Target Android Devices”项目–由于本教程不包含版本之间的差异等,请选择“Phone and Tablet”(API级别21)



点next进入下一步,AS非常热情的想给我们创建一个activity,但是我们现在不需要,所以选择(and select “Add No Activity”)拒绝新建活动



第二步完成了

下载依赖包

http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22de.greenrobot%22%20AND%20a%3A%22greendao%22

http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22de.greenrobot%22%20AND%20a%3A%22greendao-generator%22

http://search.maven.org/#search%7Cga%7C1%7Corg.freemarker

如下图下载freemarker



greendao支持自动生成数据模型为我们直接进入我们的项目。 该模块是一个java应用程序和我们的应用程序分开,所以我们要创建一个新的模块。右键单击“leasegreendao”并选择 “New” -> “Module”



之后选择 “Java Library”



选择next,调整包名如下图



点击finsh完成

将freemarker与“greendao-generator两个jar包导入到上一步新建的项目中去,如图



并在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.22.jar')
}


之后若出现“Sync Now”请点击同步Gradle

现在它变得有趣了,我们开始创建模型!打开类”leasedaogenerator”并添加如下方法:

public static void main(String args[]) throws Exception {
Schema schema = new Schema(1, "com.devteam83.tutorials.leasegreendao.model");
}


这意味着我们创造了一个“模式(schema)”,我们再次使用我们的软件包的名称(+分包模式),告诉greendao这是1版.

然后,我们给greendao为了创造我们的实体:

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)应属于一个人,所以我们必须增加以下:

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");


“../app/src/main/java”为输出路径

以上代码添加都是在leasedaogenerator中,我们看看leasedaogenerator类中的整体代码。

package com.devteam83.tutorials.leasegreendao;

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

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”,在右边的窗口,推出“run”任务“leasedaogenerator”。



只要没有打字错误,你也应该得到以下:

Processed 2 entities in 185ms

BUILD SUCCESSFUL

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


在我们的应用程序中,下面的文件应该出现:



祝贺你你成功咯。

如果你得到错误,请查看代码是否有错误

第一部分主要是生成数据模型,第二部分正式使用GreenDao咯。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: