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

这篇文章作为一个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

时间: 2024-10-11 21:54:43

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

超详细cordova环境配置(windows)及实例

摘要: 最近闲来无事就把以前做的cordova项目整理了下,发现网上很少有详细完整的配置教程,所以自己就总结了下分享给大家. 项目地址:https://github.com/baixuexiyang/hybrid 环境搭建: 1.安装node.js下载安装node.js,https://nodejs.org/en/,安装cordova时需要使用.安装完成之后在终端(win+r,cmd)执行node -v,如果看到如下图所示的版本号表示安装成功. 2.安装ant下载连接:http://apache

[Android Studio 权威教程]配置出“NB”的Android Studio

前几篇博客我们已经安装好了As,并且创建了我们的第一个HelloWrod ,这片blog我们继续配置出一个NB的Android Studio 假设你是一个才開始接触到AS或者想从Eclipse转型到AS的童鞋,那么请你持续关注我左边的专栏[Android Studio 权威教程],好的.開始我们的教程. 1.配置IDE主题 默认的主题是一个灰白色.看这特别的不好看.并且对于我们程序开发人员来讲每天要对着电脑好几个小时.特别的伤眼睛.我们来配置一个高大上的暗黑主题. 点击这个设置的小图标 这里Th

[Android] 环境配置之正式版Android Studio 1.0

======================================================== 作者:qiujuer 博客:blog.csdn.net/qiujuer 网站:www.qiujuer.net 开源库:Genius-Android 转载请注明出处:http://blog.csdn.net/qiujuer/article/details/41843095 ========================================================

超详细的Hadoop2配置详解

1. 集群环境Master 192.168.2.100Slave1 192.168.2.101Slave2 192.168.2.102 2. 下载安装包#Masterwget http://mirrors.shu.edu.cn/apache/hadoop/common/hadoop-2.8.4/hadoop-2.8.4.tar.gztar zxvf hadoop-2.8.4.tar.gz 3. 修改Hadoop配置文件#Mastercd hadoop-2.8.4/etc/hadoopvim ha

greendao 3.1.0在android studio中配置

1 项目根build.gradle classpath 'org.greenrobot:greendao-gradle-plugin:3.1.0' 2 app中build.gradle apply plugin:'org.greenrobot.greendao' dependencies{ compile 'org.greenrobot:greedao:3.1.0' } 3 配置生成目录 greendao{ targetGenDir 'src/main/java' }

入门Mac快捷键详细分类整理,包括Eclipse和Android Studio中一些常用的快捷键

[通用] control(^) shift(?)   ?? option/alt (?) command(?) fn 副功能键 [效率] 1.编辑 control + space 切换输入法(改键:alt(?)+space可见  control+alt(?)+space快速切换) control+ command + space 打开系统表情 shift+control+space 手写输入(改键:alt(?)+H ) command+←/→(↑/↓) Home/End Fn+↑/↓ pageU

Ubuntu 14.04 安装 jdk8u20 并配置环境变量 安装Android Studio

   Ubuntu 14.04 安装jdk并环境变量 jdk安装的前提:你的电脑里面没有安装openjdk,如果安装了,请先卸载 1.官网下载jdk:jdk-8u20-linux-x64.tar.gz 2.双击 jdk-8u20-linux-x64.tar.gz  提取文件到/home/ljk/JavaDevelop 目录下(你想要安装的那个目录,注意,在ubuuntu下,这个文件你一解压,就相当于已经安装了),提取完成后多出一个jdk1.8.0_20文件夹 3.CTRL+ALT+T打开终端,然

Android Studio安装及环境配置教程(转)

源链接:https://blog.csdn.net/xuw_xy/article/details/89524335 感谢博主!很详细. 注:version:2.3 前言:首先需要确定好电脑是否有安装java环境,即是否安装有JDK, 验证方法:直接电脑桌面win+R 输入cmd,然后在黑窗口中分别输入java .javac .javadoc.java -version  + enter键(注意是输入一个指令按一次enter键,如果成功的有输出,说明java环境已经有安装过且安装成功.如果不成功则

安卓实战开发之JNI入门及高效的配置(android studio一键生成.h,so及方法签名)

前言 以前也讲过NDK开发,但是开始是抱着好玩的感觉去开始的,然后呢会helloWord就觉得大大的满足,现在静下来想这NDK开发到底是干什么呢? NDK开发,其实是为了项目需要调用底层的一些C/C++的一些东西:另外就是为了效率更加高效些但是在java与C相互调用时平白又增大了开销(其实效率不见得有所提高),然后呢,基于安全性的考虑也是为了防止代码被反编译我们为了安全起见,使用C语言来编写这些重要的部分来增大系统的安全性,最后呢生成so库便于给人提供方便. 好了,我们来看一下qq的结构,我们就