Android greenDao 使用教程(一)源码编译与使用

Android ORM 框架 GreenDao 使用详解,一线互联网移动架构师Android框架体系架构 Override} else {} else {点击编译后,编译器不仅会为我们自动完成实体类代码的生成,还会在目录下生成三个文件。 阅读详情

1. 概述

1.1. 什么是greenDAO?

 

   用greenDAO官方的话说,greenDAO 是一个轻量、快速的 Android SQLite 对象映射数据库解决方案, (ORM对象关系映射英语:Object Relational Mapping)  greenDAO在最小内存下实现强大性能。

   什么是ORM?对于很多人来讲并不很好理解,尤其是新手完全不知道这个东西是做什么的。

   其实,说的简单一点,greenDAO 就是一个Android 数据库操作框架,通过这个框架,能通过代码自动生成 实体类(Bean ) 和 DAO层。也就是说,使用这个框架,操作数据库的时侯就不需要再写自已再写DbHelper、DAO层的一大堆代码,对Cursor进行操作。

   相对于编写繁杂的DAO层增删改查代码,greenDao已经简化了大量的工作。但是,greenDao对于OrmLite等框架而言还是抽象、复杂了不少。

   从性能上讲,greenDao的确是比OrmLite 更高效,但对一般应用来讲,简单的数据操作,毫秒级的速度差异是很难让人察觉到的。因此,如果对性能要求不是特别要求,我还是推荐操作更加简单方便的OrmLite。

    本文档基于greenDAO 的源码对greenDAO的使用清晰简单的介绍。

 

 

2. 源码下载及使用分析

2.1. 源码下载

2.1.1. 1 打开 https://github.com/greenrobot/greenDAO

复制 HTTPS 后面的地址 https://github.com/greenrobot/greenDAO.git

 

 

 


2.1.2. 2用Android Studio 或其它工具克隆到本地

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.2. 用Android Studio 导入项目

 

 

 

 

GreenDAO可以直接通过Gbuild.gradle 脚本导入进AndroidStudio 

 

 

 

在Android Studio 中我们将项目以 Project 的展示方式将项目展开,会发现这个项目包含了子项目

分别是:

 

 

1 DaoCore   

GreenDAO内核程序 是一个JAVA程序

这是我们最后项目中依赖的库

2 DaoExample 

示例程序列,是一个Android 程序

用来学习GreenDAO的使用

3 DaoExampleGenerator 

代码生成器示例  纯JAVA项目

4 DaoGenerator

代码生成器      纯JAVA 项目

5 DaoTest

测试            Android 测试工程

6 DaoTestGenerator

代码生成器测试  JAVA测试工程

 

   有很多新朋友,一看到这么多类库的时侯基本就放弃了,包括我也是一样,最开始看到这个项目的时侯觉得这个项目把一个数据库操作搞的这么复杂,反而是增加了烦恼。

   事实上,假如我们仔细的对这个些项目进行条理性的分析后会发现,我们真正要用到的并不多。通过名字分析,我们可以发现,这六个项目实际上是三组:分别是 DaoCore和DaoGenerator的源码、示例,和测试。

1{ DaoCore,DaoGenerator}

2{ DaoExample , DaoExampleGenerator}

3{ DaoTest,DaoTestGenerator}

 

   首先,一开始的时侯,我们并不需要测试工程,因此我们可以直接忽略DaoTest 和DaoTestGenerator,假如你看这心烦,可以先直接将这两个项目删掉,

 

   剩下的四个项目也可以从名字上推断出来,带Example 的就是示例了,接下来,我们的重点是第二组

{ DaoExample , DaoExampleGenerator}项目

 

 

 

2.3. 示例程序DaoExample 

    

 从build.gradle 可以看成到,这个程序依赖于DaoCore ,我们前面已经说过,DaoCore这个库是我们要在项目中用到的GreenDAO的核心库。或者可通过添加maven依赖编译

 

dependencies {
    //compile('de.greenrobot:greendao:2.0.0')
    compile project(':DaoCore')
}

 

 

 

 

   展开 DaoExample 我们会发现 这个项目只有一个Activity, 剩下的就是一推乱糟糟的类,通过分析,我们隐约感到其中的某些类有些关系,从名字上可以看出,应该是实体与DAO的关系,事实上也确实如此。

   

   稍后我们使用用DaoExampleGenerator 生成代码时,相信可以让大家更容易理解这些类的关系。

 

 

 

 

2.4. 代码生成器示例DaoExampleGenerator 分析

GreenDao 过个项目中,最令新手摸不着头脑的就是 DaoGenerator 和他的示例 DaoExampleGenerator

 

   从图中,我们可以看到,这是一个纯JAVA项目,而不是Android 项目,并且依赖了DaoGenerator 这个工程,没错,因为是他的示例,所以一定会依赖这个项目的。

   DaoGenerator  究竟是什么呢? 这个单从阅读代码来理解还是需要很深的Java 基础的,很多新手基本看到这里就放弃了。

   如果仅仅是使用这个框架,完全没有必要去看这个具体实现,就像我们很多人不会编Android程序仍然可以使用Android手机一样,大家只需要了解一点:这是一个代码生成器,通过这个类库可以生成GreenDAO所需要的 实体类和DAO层代码,这就是关键所在了,换句话说,就是以后我们项目中例用GreenDAO的话,就不用单独建实体类(Bean)了,而是可以通过DaoGenerator 同时生成实体类和对应用的DAO层代码。

 

2.4.1. DaoExampleGenerator代码分析

public class ExampleDaoGenerator {

    public static void main(String[] args) throws Exception {
        Schema schema = new Schema(1000, "de.greenrobot.daoexample");
       // 域名空间 就是包名,生成代码的 包名
        addNote(schema);
        addCustomerOrder(schema);

        new DaoGenerator().generateAll(schema,  

                                  "../DaoExample/src/main/java");

// 生成的代码存放的根目录
    }

    private static void addNote(Schema schema) {
        Entity note = schema.addEntity("Note"); // 类名
        note.addIdProperty();  //添加ID
        note.addStringProperty("text").notNull(); //添加"text"字段
        note.addStringProperty("comment");//添加"comment"字段
        note.addDateProperty("date");//添加"date"字段
    }

 

 

    从代码中我们可以看到,在main 方法中调用了两个方法,我们只分析其中一个就好了,从addNote(schema) 这个方法中我们可以看到,在这个方法中,向 schema 这个域名空间中添加了一个名为

   “Note”的实体类,这个类中有四个属性,id、text、comment 、data 。

   new DaoGenerator().generateAll(schema, "../DaoExample/src/main/java"); 

   这句代码的意思是,生成的代码放到 "../DaoExample/src/main/java",这个目录下。

   需要注意的是:

    在windows7 环境下,需要把 "../DaoExample/src/main/java",改成 "././DaoExample/src/main/java"

否则会报出如下找不到目录的异常:

 

 

greenDAO Generator

Copyright 2011-2015 Markus Junginger, greenrobot.de. Licensed under GPL V3.

This program comes with ABSOLUTELY NO WARRANTY

Exception in thread "main" java.io.IOException: ../DaoExample/src/main/java does not exist. This check is to prevent accidental file generation into a wrong path.

at de.greenrobot.daogenerator.DaoGenerator.toFileForceExists(DaoGenerator.java:128)

at de.greenrobot.daogenerator.DaoGenerator.generateAll(DaoGenerator.java:86)

at de.greenrobot.daogenerator.DaoGenerator.generateAll(DaoGenerator.java:79)

at de.greenrobot.daogenerator.gentest.ExampleDaoGenerator.main(ExampleDaoGenerator.java:39)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:483)

at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)

 

Process finished with exit code 1

 

2.4.2. 删除DaoExample Activity 之外的代码

 

就像这样, 删除DaoExample 中除了 NoteActivity 之外的所有代码,为什么要删除其它代码呢?刚才,我们已经看到了,在DaoExampleGenerator 的代码中

 new DaoGenerator().generateAll(schema, "../DaoExample/src/main/java");  

  把生成的代码放到了这个项目中,因此,我们暂且将其它代码删除掉,来验证 DaoExampleGenerator

 

 

2.4.3. 使用DaoExampleGenerator生成代码

右键运行 DaoExampleGenerator 

 

 

 

控制台输出以下内容,说明已经生成了我们所要的代码。

 

greenDAO Generator

Copyright 2011-2015 Markus Junginger, greenrobot.de. Licensed under GPL V3.

This program comes with ABSOLUTELY NO WARRANTY

Processing schema version 1000...

Written J:\domes\greenDAO\DaoExample\src\main\java\de\greenrobot\daoexample\NoteDao.java

Written J:\domes\greenDAO\DaoExample\src\main\java\de\greenrobot\daoexample\Note.java

Written J:\domes\greenDAO\DaoExample\src\main\java\de\greenrobot\daoexample\CustomerDao.java

Written J:\domes\greenDAO\DaoExample\src\main\java\de\greenrobot\daoexample\Customer.java

Written J:\domes\greenDAO\DaoExample\src\main\java\de\greenrobot\daoexample\OrderDao.java

Written J:\domes\greenDAO\DaoExample\src\main\java\de\greenrobot\daoexample\Order.java

Written J:\domes\greenDAO\DaoExample\src\main\java\de\greenrobot\daoexample\DaoMaster.java

Written J:\domes\greenDAO\DaoExample\src\main\java\de\greenrobot\daoexample\DaoSession.java

Processed 3 entities in 1041ms

Process finished with exit code 0

 

 

 

 

再次展开  DaoExample 示例程序,发现已经为我们重新生成了相关的类。

 

 

运行 DaoExample 

 

 

 

 

2.4.4. 定制调整实体类与DAO层代码包结构

修改 代码生成器 ExampleDaoGenerator 的代码

public class ExampleDaoGenerator {

    public static void main(String[] args) throws Exception {

      // 域名空间 就是包名,生成代码的 包名,实体类所在包
        Schema schema = new Schema(1000, "de.greenrobot.bean");

      // 设置DAO层代码的 包名
         schema.setDefaultJavaPackageDao("de.greenrobot.dao");

 

        addNote(schema);
        addCustomerOrder(schema);

        new DaoGenerator().generateAll(schema, "DaoExampleGenerator/src/");

     // 生成的代码存放的根目录 这里存放到了 本项目下的src 目录下
    }

    private static void addNote(Schema schema) {
        Entity note = schema.addEntity("Note"); // 类名
        note.addIdProperty();  //添加ID
        note.addStringProperty("text").notNull(); //添加"text"字段
        note.addStringProperty("comment");//添加"comment"字段
        note.addDateProperty("date");//添加"date"字段
    }

 

 

 

右键运行 DaoExampleGenerator  我们发现 已经在当前目录已完全美实现了实体类与DAO层代码的分离

,使代码的可读性立刻提升了一个量级。

 

 

 

 

至此,我们已经掌握了greenDao 源示例代码的使用与编译。

 


2.5. greenDAO使用小结

greenDao 的使用可以总结为以下几个步骤

1 新建Android 项目 添加 DaoCore 项目依赖或者 jar 包

2 新建 JAVA  代码生成器项目 添加 DaoGenerator 项目依赖,并生成 实体类和 DAO层代码。

3 在Android 项目中使用代码生成器生成的 实体类和DAO层代码。


Android ORM数据库之OrmLite使用框架及源码分析 一、简介  OrmLite是一个数据库框架,这个可以让我们快速实现数据库操作,避免频繁手写sql,提高我们的开发效率,减少出错的机率。  首先可以去它的官网看看www.ormlite.com,它的英文全称是Object Relational Mapping,意思是对象关系映射;如果接触过Java EE开发的,一定知道Java Web开发就有一个类似的数据库映射框架——Hibernate。简单来 阅读详情

相关推荐

Android ORM 框架之 greenDAO

Android ORM 框架之 greenDAO

是阿超 3042

一篇好文之Android数据库 GreenDao的使用指南(源码+案列)

之前在开发过程中,数据库基本上会使用Litepal和SQlite自己写,最近换新环境,公司原先使用的数据库就是GreenDao,在各种情况的作用下,准备了解下GreenDao,顺便写一篇文章记录下GreenDao的基本使用!大家在使用GreenDao的时候遇到什么问题,欢迎在文章底部或者我的公众号aserbao给我留言! 本文主要从如下几个方面进行讲解:GreenDao的优缺点 1. Gree...

aserbao的博客 5万+

Android数据库开源框架GreenDao分析

前段时间写Demo的时候遇到了数据库的并发问题 Android数据库多线程并发操作异常 ,然后研究了一下 Android中的数据库连接池 。在看相关代码的时候阅读了我们项目使用的数据库框架GreenDao 。哈哈,挺有意思的^ _ ^。 Android原始数据库的使用 创建数据库 public class DatabaseHelper extends SQLiteOpenHelper { ...

stven_king的专栏 1011

Android greenDao

greenDAO是一个开源的Android ORM(对象-关系映射),它让SQLite数据库的开发再次变得有趣。它使开发人员免于处理低级数据库要求,同时节省了开发时间。SQLite是一个很棒的嵌入式关系数据库。尽管如此,编写SQL和解析查询结果仍然是非常繁琐且耗时的任务。通过将Java对象映射到数据库表(称为ORM,“对象/关系映射”),greenDAO使您摆脱了这些麻烦。这样,您可以使用简单的面向对象的API来存储,更新,删除和查询Java对象。 最佳性能 (可能是 Android 中最快的 ORM) ,

xiaowang_lj的博客 1662

(OpenCV)图像目标尺寸检测

  本文翻译自pyimagesearch技术博客上的一篇文章,《Measuring size of objects in an image with OpenCV》,原文作者:Adrian Rosebrock 。 https://www.pyimagesearch.com/2016/03/28/measuring-size-of-objects-in-an-image-with-opencv...

明柳梦少的博客 7万+

MobileNet V3 图像分类

MobileNet V3

Henry的博客 1768

Android数据库框架-GreenDao入门,阿里P8架构师Android大厂面试题总结

// in the individual module build.gradle files } } 之后点击Sync Project 2.2. 在app的build.gradle中配置 apply plugin: ‘com.android.application’ apply plugin: ‘org.greenrobot.greendao’ 之后在dependencies中添加依赖 dependencies { implementation fileTree(dir: ‘libs’, include:

m0_64604178的博客 1057

意图识别和纠错问题

可想而知,错误的意图识别会带来多大的负面影响。基于词典,就是对用户query内容和词典内容进行比对,比较常见的方式是序列标注问题里用的最大逆向匹配,通过这种方式找到词典里的实体词,匹配触发了自然就有意图了,而在词典匹配的时候,不是使用链表之类的来构造匹配结构,而是使用搜索树的结构,这种匹配的复杂度最低,速度也快,两者结合,其速度甚至比很多模型要快得多(基本上1ms以内就能完成),fasttext速度非常快,但是textcnn之类的其实就已经达到ms级别以上,bert甚至在10ms级别。

TURING.DT 4571

greenDAO的简单使用(一)

greenDAO是Android经常使用的ORM开源框架,ORM(Object-Relation-Mapping)对象关系映射,它可以帮助 Android 开发者快速将Java对象映射到SQLite数据库的表单中的ORM解决方案 greenDAO的优点: 最大性能(最快的 Android ORM) 易于使用API 高度优化 最小内存消耗 它的官网:http://greenrobo

DMT专栏 8209

7、RNA 二级结构预测:包含接吻发夹基序的新策略

本文提出三种用于预测RNA二级结构中接吻发夹基序的新策略,结合规范化规则与非歧义动态规划,分别在时间与空间复杂度之间进行权衡。策略A以O(n⁴)时间和O(n²)空间实现高效预测;策略B通过存储次优结果扩大搜索空间,空间复杂度升至O(n³);策略C全面探索组合可能,时间复杂度为O(n⁵),但保持O(n²)空间。实验表明不同策略适用于不同复杂度的序列,为RNA结构预测提供了灵活且可扩展的解决方案。

j7k8l的博客 132

YOLOv11涨点改进 | Neck改进篇 | YOLOv11引入 BiFPN双向特征金字塔网络,显著提升了多尺度特征融合效率

本文介绍了基于BiFPN特征融合模块优化的YOLOv11目标检测模型。BiFPN通过双向跨尺度连接和加权特征融合机制,显著提升了多尺度特征融合效率。该方法在COCO数据集上实现了55.1AP的检测精度,同时大幅降低计算成本(减少13-42倍FLOPs)。文章详细解析了BiFPN模块结构、核心代码实现方法,并提供了YOLOv11-BiFPN配置文件的修改指导,为计算机视觉领域提供了一种高效的目标检测解决方案。

Ai缝合怪、助力小伙伴高效发论文 714

Android GreenDao的基本使用

最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的24套腾讯、字节跳动、阿里、百度2019-2021BAT 面试真题解析,我把大厂面试中常被问到的技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节。还有 高级架构技术进阶脑图 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。Android 基础知识点Java 基础知识点Android 源码相关分析常见的一些原理性问题。

2401_83692985的博客 1088

SQL的基本介绍

1.什么是数据库?2.什么是数据库管理系统?3.什么是 SQL?1.数据库是保存有组织的数据的容器,通常是一个文件或一组文件,可以将其看作电子化的文件柜。用户可以对文件中的数据执行新增、删除、更新、查询等操作。2.数据库管理系统是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户可以通过 DBMS 访问数据库中的数据,数据库管理员也可以通过 DBMS 进行数据库的维护工作。

shiwei0813的博客 2879

Android ORM框架 GreenDao 的使用详解

一、前言 关于 Android 中常用的数据存储方式我们前面已经讲了 Sp 存储 和 文件存储,但是对于数据量比较大,并且结构复杂的数据我们想要存储只能通过数据库进行处理,Android 中提供了一个 SQLite 数据库,但是使用起来比较繁琐和复杂,所以 Android 又推出了 Room 持久性库,Room 持久性库在 SQLite 的基础上提供了一个抽象层,让用户能够在充分利用 SQLite 的强大功能的同时,获享更强健的数据库访问机制。但是我们今天不讲 Room 这个组件(以后讲 Jetpack

weixin_38478780的博客 1165

Java开发者终极抉择:IntelliJ IDEA vs VS Code —— 4大维度深度对比评测

🔥关注墨瑾轩,带你探索Java的奥秘!🚀🔥超萌技术攻略,轻松晋级编程高手!🚀🔥技术宝库已备好,就等你来挖掘!🚀🔥订阅墨瑾轩,智趣学习不孤单!🚀🔥即刻启航,编程之旅更有趣!🚀在Java开发领域,选择合适的集成开发环境(IDE)对于提高开发效率和代码质量至关重要。和(简称VS Code)是两个广受好评的开发工具,各自拥有独特的特性和庞大的用户群。本篇将从多个维度深入探讨这两款IDE对Java开发者来说的优劣,包括但不限于性能、用户体验、生态系统、调试能力、以及特定Java功能的支持等方面。

java专栏 8590

python爬虫项目(一百九十八):电商平台用户行为数据分析与推荐系统、爬取电商平台用户行为数据

本文详细介绍了如何通过爬虫技术抓取电商平台的用户行为数据,并结合数据分析技术,构建一个简单的推荐系统。使用Selenium模拟用户操作抓取动态网页数据,并通过API接口直接获取用户行为数据,能够为后续的用户行为分析提供基础数据。我们结合了基于用户协同过滤、基于商品协同过滤和矩阵分解等方法,构建了不同的推荐系统。实际应用中,可以进一步优化推荐算法,利用更复杂的深度学习技术和更高效的数据处理方法,提升推荐的准确性和个性化程度。

斌擎科技 2361

Android GreenDao的基本使用(1)

目前已经更新的部分资料:《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!链图片转存中…(img-dkHrKIjQ-1712994898657)][外链图片转存中…(img-JcdLCdl1-1712994898657)]《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

2401_84121827的博客 1020

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Android中GreenDao数据库框架的使用

之前就用过这个数据库框架,一直没有事件写出来,今天终于有时间记录下啦。现在用的是3.2的版本,故以GreenDao的3.2的版本为主,记录下自己对这个框架的使用。1、了解GreenDao3.21)orm是对象与数据的映射,简而言之就是让java实体与数据库建立绑定的联系;2)我们所熟知的数据库又可分之为层次式数据库、网络式数据库和关系式数据库三种,然而我们在使用时有经常分为关系型和非关系型两种;关...

smxueer的专栏 1657

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Android ORM框架greenDAO 源码工程编译

Android ORM框架greenDAO学习目录: 介绍 Jar包 Java工程 Android工程 介绍官方网站http://greendao-orm.com/ 介绍略下载greenDAO源码后,解压含有六个工程目录,分别为: (1).DaoCore:核心源码; (2).DaoExample:android范例工程; (3).DaoExampleGenerator:DAO类构造器的jav

Guo_Ruin的专栏 616

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

android greendao-2.0.0.jar,Android平台下GreenDao的使用

greenDao的介绍greenDao是Android数据库ORM(object/relational mapping 对象关系映射的简称)的一个典型代表,其他也有ORMLite等,但greenDao在众多的ORM数据库框架中性能是最好,速度也是最快的,在官方网站中有这个对比,感兴趣的同学可以去看看,greenDao在单位时间内可以插入、更新和查询更多的数据,而且提供了大量的灵活通用接口,文章的最...

weixin_39764494的博客 241

Android之greenDao的使用

greendao  简单来说 就是把数据库化作 对类的管理了  绕开了sql语句 既然是化作了对类的管理,那就要有实体类 和 管理类, 实体类和 管理类 最好提前用java工程生成。 所以 步骤一,类文件的生成 ,idea eclipse 创建个java工程就行。 // TODO android 单元测试没具体测试,估计也能行。 import de.greenrobot.daogener

slyoko的博客 530

GreenDao数据库框架源码解析:Awesome-Third-Library-Source-Analysis揭秘Android最高效数据库操作

GreenDao是Android平台上备受欢迎的高效数据库框架,它通过对象关系映射(ORM)技术,让开发者能够以面向对象的方式轻松操作SQLite数据库,大幅提升开发效率。在Awesome-Third-Library-Source-Analysis项目中,我们可以深入探索GreenDao的源码实现,了解其如何实现高效的数据存储与查询。 ## 一、GreenDao为何成为Android开发者的首选

gitblog_00485的博客 444
上一篇: nodejs + express + ejs + mongodb本地环境安装及搭建
下一篇: Android greenDao 使用教程(二) 在Eclipse 下编译使用greenDao
longtaoger
博客等级 码龄13年 7粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值