关于GreenDao

greenDAO 是一个将对象映射到 SQLite 数据库中的轻量且快速的 ORM 解决方案。

greendao使用详解 greendao数据库升级教程 第1张  greendao使用详解 greendao数据库升级教程 第2张  

GreenDao的优势

1.一个精简的库

2.性能最大化

3.内存开销最小化

4.易于使用的 APIs

5.对 Android 进行高度优化

GreenDao 3.0使用

API:

1.)实体@Entity注解

schema:告知GreenDao当前实体属于哪个schema

active:标记一个实体处于活动状态,活动实体有更新、删除和刷新方法

nameInDb:在数据中使用的别名,默认使用的是实体的类名

indexes:定义索引,可以跨越多个列

createInDb:标记创建数据库表**

2.)基础属性注解

@Id :主键 Long型,可以通过@Id(autoincrement = true)设置自增长

@Property:设置一个非默认关系映射所对应的列名,默认是的使用字段名举例:@Property (nameInDb=”name”)

@NotNul:设置数据库表当前列不能为空

@Transient:添加次标记之后不会生成数据库表的列

3.)索引注解

@Index:使用@Index作为一个属性来创建一个索引,通过name设置索引别名,也可以通过unique给索引添加约束

@Unique:向数据库列添加了一个唯一的约束

4.)关系注解

@ToOne:定义与另一个实体(一个实体对象)的关系

@ToMany:定义与多个实体对象的关系

android studio 实际项目中使用

1,配置

在project下的gradle里面添加

greendao使用详解 greendao数据库升级教程 第3张  greendao使用详解 greendao数据库升级教程 第4张  

在app里面添加

greendao使用详解 greendao数据库升级教程 第5张  greendao使用详解 greendao数据库升级教程 第6张    greendao使用详解 greendao数据库升级教程 第7张  greendao使用详解 greendao数据库升级教程 第8张    greendao使用详解 greendao数据库升级教程 第9张  greendao使用详解 greendao数据库升级教程 第10张  

创建一个实体类

这里我只是做个demo 就只配了表面和主键

greendao使用详解 greendao数据库升级教程 第11张  greendao使用详解 greendao数据库升级教程 第12张  

配好了ctrl+F9 编译下当前Module,greedao的插件就会在配置的路径中生成相应的代码,

红线是插件自动生成的,2个没有没有画的,是大神对版本升级时候对数据库的操作。

 greendao使用详解 greendao数据库升级教程 第13张greendao使用详解 greendao数据库升级教程 第14张

在app入口初始化,这里我添加了版本升级的代码。

greendao使用详解 greendao数据库升级教程 第15张  greendao使用详解 greendao数据库升级教程 第16张  

下面这个是不用版本升级的代码,对GreenDao的初始化

greendao使用详解 greendao数据库升级教程 第17张  greendao使用详解 greendao数据库升级教程 第18张  

acitivty代码

greendao使用详解 greendao数据库升级教程 第19张  greendao使用详解 greendao数据库升级教程 第20张    greendao使用详解 greendao数据库升级教程 第21张  greendao使用详解 greendao数据库升级教程 第22张    greendao使用详解 greendao数据库升级教程 第23张  greendao使用详解 greendao数据库升级教程 第24张  

运行结果

插入了5条数据,删除了第一条,更新了第二条。

greendao使用详解 greendao数据库升级教程 第25张  greendao使用详解 greendao数据库升级教程 第26张  

版本升级的时候,注意当字段改了之后,要更改数据库版本号,若没有的改变的话就不用改。

另外数据库版本升级,demo中使用的是别人写的一个,采用的是把原来的数据拷贝一份然后删除,重新创建数据库,再把数据copy回去。

若是没有对数据进行升级相关操作而直接更改数据库版本号的话,数据会在项目更新的时候丢失。