Android实战——GreenDao3.2的使用,爱不释手

仓廪实则知礼节,衣食足则知荣辱。这篇文章主要讲述Android实战——GreenDao3.2的使用,爱不释手相关的知识,希望能为你提供帮助。
1前言
   
GreenDao是一款操作数据库的神器,经过了2.0版本的升级后,已经被广泛的开发者使用。确实是很好用,入门简单,可以剩去了数据库的建表操作和数据库SQL的编写,博主用了一次之后爱不释手,和以前的数据库操作一大堆的代码将它缩成了一句话,舒服 
2GreenDao3.2的简介
   
认识GreenDao之前必须知道ORM(Object Relation Mapping对象关系映射),其表现形式就是通过GreenDao将数据库和Bean对象关联起来,其表现形式如下图
 

Android实战——GreenDao3.2的使用,爱不释手

文章图片

 
 

GreenDao之所以很流行,跟它的优点是息息相关的,从官网中可以看到这样一张图,其表示了在主流的ORM第三方库中,其对数据库操作的速度是最快的
 
Android实战——GreenDao3.2的使用,爱不释手

文章图片

 
不仅如此,其优点还包括有以下几点
  • 存取速度快
  • 支持数据库加密
  • 轻量级
  • 激活实体
  • 支持缓存
  • 代码自动生成
 
3GreenDao3.2的配置
   
 
GreenDao的配置很简单,不过需要注意的是,有些人按照正确的配置后却频频出错,个人也经历过,最后的原因是网络有问题。因为校园网的DNS服务很差,所以解析不到GreenDao的依赖网站
 
一、需要在工程(Project)的build.gradle中添加依赖
 
Android实战——GreenDao3.2的使用,爱不释手

文章图片

 
 
二、在项目(Module)的build.gradle中添加依赖
 
Android实战——GreenDao3.2的使用,爱不释手

文章图片

Android实战——GreenDao3.2的使用,爱不释手

文章图片

 
上面是我自己建立工程的gradle文件的配置。另外,我将greendao官网示例的配置文件也贴出来。具体如下:
 
Android实战——GreenDao3.2的使用,爱不释手

文章图片

Android实战——GreenDao3.2的使用,爱不释手

文章图片

 
到这里就配置成功了
 
4GreenDao3.2的使用
   
配置完成后,最重要的就是GreenDao的使用了,或许使用过Bmob第三方后端云的同学会知道,他们的API有些相像,都是通过API来拼装SQL语句的
 
下面就以购物车的实战来使用GreenDao,这里的购物车展示图如下
 
Android实战——GreenDao3.2的使用,爱不释手

文章图片

【Android实战——GreenDao3.2的使用,爱不释手】
我们所知道的数据库操作需要:数据库名、表名、字段名,缺一不可,下面就是这三项的创建
 
一、创建Bean对象(表名和字段名)
 
GreenDao需要创建Bean对象之后,该Bean对象就是表名,而它的属性值就是字段名,其实现是通过注释的方式来实现的,下面是购物车的Bean对象(每个Bean对象对应一张表)
 
Android实战——GreenDao3.2的使用,爱不释手

文章图片

 
 
这里需要注意的是,创建完成之后,需要build gradle来完成我们的代码自动生成,按Ctrl+F9(或者工具栏build下面的Make Project)对项目进行重新构建即可。自动生成的代码有
 
  1. Bean实体的构造方法和get、set方法
  2. DaoMaster、DaoSession、DAOS类
 
Android实战——GreenDao3.2的使用,爱不释手

文章图片

 
这里对Bean对象的注释进行解释
 
  1. @Entity:告诉GreenDao该对象为实体,只有被@Entity注释的Bean类才能被dao类操作
  2. @Id:对象的Id,使用Long类型作为EntityId,否则会报错。(autoincrement = true)表示主键会自增,如果false就会使用旧值
  3. @Property:可以自定义字段名,注意外键不能使用该属性
  4. @NotNull:属性不能为空
  5. @Transient:使用该注释的属性不会被存入数据库的字段中
  6. @Unique:该属性值必须在数据库中是唯一值
  7. @Generated:编译后自动生成的构造函数、方法等的注释,提示构造函数、方法等不能被修改
假如需要对当前数据库表(一个实体对象,代表一张数据库表)中某个字段,或某些个字段,在进行数据插入的时候,假如其中这些字段值相等,则直接执行覆盖时,可以按照官网的介绍:
@Entity(indexes = { @Index(value = "https://www.songbingjia.com/android/text, date DESC", unique = true) }) public class Note { @Id private Long id; @NotNull private String text; private Date date; ...

  也就是类似如下:
Android实战——GreenDao3.2的使用,爱不释手

文章图片

value当中,填的字符串名必须要与字段名一致,value中填多个字段的话,则表示只有多个字段的值都同时相等的情况下,在进行插入数据库时才会进行覆盖。
 
二、创建数据库(数据库名)
 
数据库的表名和字段都建好了,下面差个数据库的创建,下面通过传统和GreenDao的比较来体验其优点
① 传统的数据库创建
 
Android实战——GreenDao3.2的使用,爱不释手

文章图片

 
② GreenDao数据库创建
 
Android实战——GreenDao3.2的使用,爱不释手

文章图片

可以发现,GreenDao已经将我们的数据库创建缩成几句话,代码会自动将Bean对象创建成表,不再是传统的手写SQL语句。这里的数据库创建只需要在Application中执行一次即可,这里对几个类进行解释
 
  • DevOpenHelper:创建SQLite数据库的SQLiteOpenHelper的具体实现
  • DaoMaster:GreenDao的顶级对象,作为数据库对象、用于创建表和删除表
  • DaoSession:管理所有的Dao对象,Dao对象中存在着增删改查等API
 
由于我们已经创建好了DaoSession和Shop的Bean对象,编译后会自动生成我们的ShopDao对象,可通过DaoSession获得
 
ShopDao dao = daoSession.getShopDao();

这里的Dao(Data Access Object)是指数据访问接口,即提供了数据库操作一些API接口,可通过dao进行增删改查操作
 
三、数据库的增删改查
 
数据库的表名、字段、数据库都建好了,下面就通过传统和GreenDao对数据库的操作来比较体验其优点
 
① 传统的增删改查
 
Android实战——GreenDao3.2的使用,爱不释手

文章图片

 
② GreenDao增删改查
 
Android实战——GreenDao3.2的使用,爱不释手

文章图片

效果很明显,GreenDao的封装更加短小精悍,语义明朗,下面对GreenDao中
 
5Dao对象其他API的介绍   
  • 增加单个数据 
    • getShopDao().insert(shop);
    • getShopDao().insertOrReplace(shop);
  • 增加多个数据 
    • getShopDao().insertInTx(shopList);
    • getShopDao().insertOrReplaceInTx(shopList);
  • 查询全部 
    • List< Shop> list = getShopDao().loadAll();
    • List< Shop> list = getShopDao().queryBuilder().list();
  • 查询附加单个条件 
    • .where()
    • .whereOr()
  • 查询附加多个条件 
    • .where(, , ,)
    • .whereOr(, , ,)
  • 查询附加排序 
    • .orderDesc() 倒序
    • .orderAsc() 正序
  • 查询限制当页个数 
    • .offset(0) 从数据库0位置,第一条开始查询
    • .limit() 查询多少个
  • 查询总个数 
    • .count()
  • 修改单个数据 
    • getShopDao().update(shop);
  • 修改多个数据 
    • getShopDao().updateInTx(shopList);
  • 删除单个数据 
    • getTABUserDao().delete(user);
  • 删除多个数据 
    • getUserDao().deleteInTx(userList);
  • 删除数据ByKey 
    • getTABUserDao().deleteByKey();
  6结语
   
关于GreenDao的的基本概念与基本操作就讲到这里,更多对于GreenDao的数据库操作还需要多多从实战中去探索,这里只是一个快速入门的引导.GreenDao高级操作还包括有:多表查询、多表关联、session缓存等用法,可以到GreenDao的官网进行学习
Github:
  • https://github.com/androidHensen/GreenDaoDemo

    推荐阅读