为了账号安全,请及时绑定邮箱和手机立即绑定

Android框架系列之GreenDao (二)

标签:
Android

    上一篇文章主要讲述了GreenDao的生成过程,以及如何初始化,那么本篇来讲一下GreenDao的核心类的代码解析以及如何调用GreenDao实现数据操作。

    从上篇初始化讲解的时候可以看到,GreenDao初始化的时候,实例化了几个核心类,分别是DevOpenHelper, DaoSession, DaoMaster.


1. DevOpenHelper


     DevOpenHelper是DaoMaster的内部类。先看一下它的继承层级,就明白它是做什么的了

      .SqliteOpenHelper

            .DatabaseOpenHelper

                 .OpenHelper

                      .DevOpenHelper

      从以上继承关系可以看出,DevOpenHelper的最终继承是SqliteOpenHelper.是不是很眼熟呢?没错,它就是我         们常用的手写数据库操作的类,我们通过它建立与更新数据库;由此可见,GreenDao也是在SqliteOpenHelper       基础上封装的。在DevOpenHelper中,定义了onCreate 与onUpgrade的实现,如图:

 5bab8ca700014b4709140148.jpg5bab8ca80001d31012530153.jpg  

2. DaoMaster


          DaoMaster是数据库创建与更新过程的核心类,相当于辅助SqliteOpenHelper完成数据创建过程的类,我们           来看一下DaoMaster的主要代码结构,除了DevOpenHelper以外,DaoMaster包含以下方法:

          . createAllTables与 dropAllTables

           . newSession 与 newDevSession

         前者用于在onCreate中创建所有的表;后者则用于在onUpgrade中删除所有的表。

         newSession与newDevSession分别在初始化中创建DaoSession实例。


3. AbstractDaoSession

      .DaoSession


        DaoSession是一个业务类,继承自AbstractDaoSession; DaoSession根据每一个表创建一个Table ->Bean的           关联,将数据表与实体类真正的绑定到一起,便于GreenDao用对象直接操作数据库。DaoSession的作用除了           做一些基础的配置以外,主要实现所有Dao的实例化,并与Table绑定到一起。核心代码为:

         UserDao userDao = new UserDao(userDaoConfig, this); // 实例化UserDao

         registerDao(User.class, userDao); // 注册Dao,传入User的Bean Class与UserDao

         5bab8ca800017ffe12910678.jpg


       上一篇中的GreenDao初始化时说过,调用GreenDao操作数据库,需要用DaoSession对象来获取XXDao;那么           在DaoSession的父类AbstractDaoSession中,主要执行一些对象关系绑定,以及数据库基本操作,比如                 insert/delete/update等。这样在AbstractDaoSession中便于统一获取Dao来执行数据库的基本操作。                   AbstractGreenDao的核心变量与方法如下:

 

         . Map<Class<?>,  AbstactDao<?, ?>>  entityToDao

         . registerDao(Class<T> entityClass,  Abstract<T, ?> dao)

         . getDao(Class<? extends Object> entityClass)

         . insert/delete/update/refresh



5bab8ca90001f77110000502.jpg

    从以上可以看出AbstractDaoSession的主要职能: 1) 建立Dao与对应Entity的对应关系  2)统一获取Dao执         行数据库基本操作 


4. Dao


      这里的Dao是通过genetator自动生成的对应于每一个实体类或者表格的Dao,一个表对应一个Bean类对应一           个Dao。在这些生成的Dao中,有一个共同的部分需要解释一下,那就是内部类Propertys,它以Property的形式        保存该表的所有字段或者类的所有属性,我们在进行数据库操作时,特别是在查询时,需要用Property对象来         设置查询条件。如下:

  5bab8ca9000152f711090223.jpg

 

原文链接:http://www.apkbus.com/blog-192385-62614.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消