当前位置:网站首页 > 技术博客 > 正文

greenorbs



GreenDao是一款Android上的ORM框架(对象/关系映射),在数据库开发中能帮我们从枯燥的CRUD中节约大量的时间,这里针对GreenDao3.0以后的版本做一个简单的使用介绍。

GreenDao Github地址 引入Gradle插件, 在根目录的中,加入GreenDao的插件依赖地址:

 
  

在包含entity注解的实体类所在module的中,加入使用插件:

 
  

在base module或者你的数据库管理类所在的module的中加入基本依赖:

 
  

GreenDao的基本配置:

 
  

如果使用混淆,那么需要加入以下配置:

 
  

这里引入的是3.2.2版本,这里提一句和区别只是影响编译期的依赖传递,我是在base模块引入的,为了让应用模块都能正常使用,所以使用的是来引入。 上述依赖都添加完成之后,写一个作为表的entity的case:

 
  

然后编译一次工程,就会生成对应的DaoMaster,DaoSession,XXXDao了。 这里需要注意,作为entity的数据实体类,必须使用java编写,目前还不支持kotin

接下来我们对数据库进行操作,首先我们需要能够对数据库进行创建打开升级等操作,这里会创建一个操作类:

 
  

然后我们可以创建一个类,帮住我们管理数据库:

 
  

然后就可以开始基本的增删改查了:

 
  

下面说一下查询,查询还可以结合增删改一起操作,因为很多场景我们都不是根据主键来操作,在我的case中,比如我可能想删除一本叫《诛仙》的书:

 
  

由于拼sql存在一些语法不熟,不小心写错了等问题,我们还可以使用GreenDao提供的方法来操作:

 
  

在大多数的场景中都会有多表互相依赖的问题,在我的case中,存在和两个类,他们之间的关系,一本书有他的章节列表,那么他们就是1对多的关系,如下所示:

 
  

接下来是1对1的关系,例如1本书肯定会有并且只有一个正在阅读的章节,那么他们就是1对1的关系,可以如下表示:

 
  

最后我们还有多对多的关系,这个稍微麻烦一点,使用到的场景一般也比较少,需要声明一个关联类,来绑定多对多的关系双方,例如假设我们1本书可以有多个精彩章节,1个章节也可以对应多本书(例子不太恰当,大家能理解就行):

 
  

这里声明就完了,如果需要将某些Book和Chapter绑定起来,那么需要向数据库中插入绑定关系对象:

 
  

执行结果:

 
  

能看到执行结果是符合我们预期的

1、java和kotlin工程 纯java工程基本没有影响,但是在kotlin工程中,entity一定要用java写,GreenDao不支持kotlin写的entity;然后如果发现运行的时候一直提示找不到XXXDao,但是你IDE里面能找得到没报错,那么在module的build.gradle中加上:

 
  

因为GreenDao生成的这个资源目录,在kotlin中默认不属于源码目录

2、数据库升级技巧 可以看到上面的代码中我使用的是一个帮助类:

 
  

在这里他会自动比较你传入的XXXDao和之前数据库中的表字段差异,自动进行修复,还是比较好用的,常规的每个版本人工修改变化,我之前数据库升级方法有几百行了。。。。

引用:

 
  

3、注意get方法 类似于刚刚介绍的多表关联的字段,不可以直接访问该字段,因为这个字段的填充是在他的get方法中进行赋值的,在entity类中可以看到GreenDao会将该字段的get方法重写,所以访问尽量通过get和set方法进行

参考资料: Android GreenDao 使用全面讲解

版权声明


相关文章:

  • 数据结构快速排序图解2025-08-25 18:01:02
  • 随机一致性指标数值表2025-08-25 18:01:02
  • 运维平台app2025-08-25 18:01:02
  • 超像素分割后的提取2025-08-25 18:01:02
  • java键值对有哪些集合2025-08-25 18:01:02
  • sql左外连接怎么写2025-08-25 18:01:02
  • lspci命令安装2025-08-25 18:01:02
  • yml文件的作用2025-08-25 18:01:02
  • 更换python版本2025-08-25 18:01:02
  • nlp自然语言处理算法2025-08-25 18:01:02