Android Studio集成greenDAO 3.0基础教程
greenDAO 3是一款当前Android开发较流行的SQLite框架,该框架在集成、使用方面和其他框架有所不同,本文将从以下几方面帮助初学者了解greenDAO 3:1、快速集成greenDAO 3,2、初步体验greenDAO 3对数据增、删、改、查的便捷,3、深入理解Gradle Plugin插件,4、深入理解注解的基础知识,5、greenDAO 3源码分析
一、快速集成greenDAO 3
- 01
与以往集成框架不同的是,greenDAO 3除了需要在build.gradle文件的dependencies标签添加依赖包greendao:3.2.2外,还需要下载并添加一个Gradle插件,该插件叫:greendao-gradle-plugin:3.2.2,使用Android Studio插件module后,打开build.gradle文件
- 02
第一步:添加greenDAO依赖包,如下图:
- 03
第二步:下载并添加greenDAO 3构建插件,如下图:
- 04
细心的读者会发现,greenDAO 3插件的代码和apply plugin: 'com.android.application'的代码有几分相似,后者的代码在每一个新建的Application Module中都会出现,如果新建的是一个Library Module,上述代码变成apply plugin: 'com.android.library',现在我们先不讨论,后面会深入理解Gradle Plugin。
- 05
第三步:同步buid.gradle文件,配置如下图
- 06
在项目中展开External Libraries,可以看到greendao-3.2.2和greendao-api-3.2.2两个类库,后面会分析这两个类库的源码,从源码中学习它们的使用,如下图:
- 07
这个时候,我们已经完成Android Studio集成greenDAO 3的任务,接下来greenDAO怎么使用。
二、初步体会greenDAO 3增、删、改、查数据的便捷
- 01
greenDAO 3相比greenDAO 2有了重大的改变(本文介绍的是greenDAO 3的用法),greenDAO 3使用了注解的方式定义Java实体和SQLite表之间的关系,实体和表之间处于一种关联的关系,当实体中的属性发生改变,调用update方法更新表中的内容;当需要往表添加内容,调用insert方法插入数据,减少开发者编写重复、繁琐的SQL代码,体会greenDAO 3带来数据操作的便捷
- 02
现在,需要创建一张学生表,用于保存学生的基本信息:姓名、年龄、成绩,使用greenDAO 3框架就会显得很方便,代码如下:
- 03
新建一个Student类,并添加greenDAO相关的注解,注解包括:@Entity定义SQLite表相关内容,@Id定义表的主键,@NotNull定义表的列不为空,还有其他注解的标签,TeachCourse将在后面进行介绍。
- 04
前面我们不清楚为什么需要添加一个Gradle Plugin,现在我们在新建Student类后,点击菜单Build——>Make Project或Make Module xxx,然后等待构建完成,需要注意:原来的Student类自动添加了一些额外的代码,如下:
- 05
这是使用greenDAO 3其中一个便捷的地方,减少我们编写额外的代码(关于会自动生成哪些代码,学习greenDAO注解的时候会说到)。 如果你没有在build.gradle文件的greendao标签中定义属性:daoPackage,默认生成表的相关Java代码位于如下路径:
- 06
我们展开上述路径,看到如下图:
- 07
除了生成生成表的相关Java代码外,还多创建了两个类DaoMaster和DaoSession,这两个类用于操作表的增、删、改、查,同时这两个类在第一次构建生成后,以后不再重新生成。简单地说,如果我们还想要创建一张课程表Course,代码如下:
- 08
点击菜单Build——>Make Project或Make Module xxx,然后等待构建完成,生成新的CourseDao类,而不会重新生成DaoMaster和DaoSession,如下图:
- 09
打开StudentDao类,发现里面自动生成了一些创建表的SQL语句以及一些操作表的方法;DaoSession类是greenDAO框架其中一个重要的接口,为开发者提供访问实体的操作和DAOs的一系列操作,基本用法如下:
- 10
每创建一个新的session,需要分配对应的内存空间,最好的做法:在application的onCreate()方法初始化,对外提供访问session的方法,减少内存的消耗,如下图:
- 11
2.1 插入数据
- 12
2.2 删除数据
- 13
2.3 更新数据
- 14
2.4 查询数据
- 15
到此,我们已经体会到greenDAO对数据增、删、改、查的便捷,接下来将进行高级教程的学习。
三、深入理解Gradle Plugin插件
- 01
Gradle是一种新一代的自动化构建工具,类似于Apache ant和Apache Maven,既继承了后两者自动化工具的优点,又添加新的特性,它的特性是:使用Groovy而不是xml编写配置文件,大大降低构建脚本的大小而且更易读。
- 02
Groovy虽说是一门新的语言,但因其源自于Java运行在Java Virtual Machine,所以和Java语言有很多相似的地方,更加简单、轻量级,比如:
- 03
3.1 Java和Groovy定义类的区别
- 04
3.2 Java和Groovy定义变量的区别
- 05
3.3 Java和Groovy定义方法的区别
- 06
3.4 Java和Groovy调用方法的区别
- 07
3.5 Java和Groovy其他方面的区别
- 08
3.6 自定义Gradle Plugin
- 09
在当前的例子中,greendao-gradle-plugin是一个使用Groovy语法编写的自定义插件,上传到开源的仓库,只需要在build.gradle添加如下代码,即可在项目中集成使用:
- 10
现在,我们需要定义自己的一个插件,自定义的插件上传本地仓库,只需要在build.gradle文件添加如下代码,即可使用:
- 11
在本地创建一个Groovy项目,项目名称为app-groovy,项目结构如下图:
- 12
app-groovy项目的根目录包括build.gradle和settings.gradle两个文件,如下图:
- 13
groovy和resources属于两个固定名称的文件夹,前者用于存储Groovy语言编写的代码,后者用于存放当前插件的属性文件,如下图:
- 14
3.7 详细了解上述各个文件代码
- 15
build.gradle文件添加了两个插件groovy和maven,uploadArchives是添加插件提供的一个task,作用是将当前插件上传本地,代码如下:
- 16
settings.gradle文件定义当前插件的名字,只有一句代码,如下:
- 17
groovy文件夹内添加对应的包名,然后新建一个以.groovy后缀的文件,实现Plugin<Project>接口,重写apply()方法,该方法会在应用插件的时候回调,代码如下:
- 18
resources文件夹包含子文件夹:META-INF——>gradle-plugins,然后新建以.properties为后缀的属性文件,文件名与apply plugin ''的插件名称一致,文件内部添加实现类的目录位置,代码如下:
- 19
到此完成了自定义插件的app-groovy的开发
- 20
3.8 Gradle工具自动化构建app-groovy
- 21
Android Studio默认下载了Gradle自动化构建工具到本地,在AS的安装目录Android Studio\gradle找到,配置一下gradle的环境变量,即可在cmd命令行使用,可以参考《Android开发之深入理解Android Studio构建文件build.gradle配置》
- 22
Gradle具体构建过程步骤如下:
- 23
1、gradle -v,检查环境变量是否配置成功
- 24
2、gradle task_name,执行指定的task_name,这里执行uploadArchives,在项目同级目录创建仓库repo,如下图:
- 25
3、gradle -q tasks --all,如果你不清楚项目包含哪些可执行的tasks,使用上述命令可检查项目包含可执行的task(切换到当前项目根目录),如下图:
- 26
到此,TeachCourse完成了app-groovy项目的构建,这个过程和使用AS构建Android项目是一样
- 27
3.9 如何引用自定义的Gradle Plugin?
- 28
在app-groovy项目的同级目录下新建文件夹sample,然后里面新建文件build.gradle,代码如下:
- 29
1、gradle build,检查当前build.gradle文件应用的插件,如下图:
- 30
2、gradle myTask,执行指定的task,如下图:
- 31
3、到此,TeachCourse完成了build.gradle文件应用Gradle Plugin
- 32
PS:由于篇幅的原因,剩下的内容:,,下一篇文章介绍