DBFlow源码分析:SQL拆解(BaseQueriable,BaseModelQueriable)

以面向对象的方式看待sql

sql语句由好多部分组成。
把每一部分抽象出类。

结构

DBFlow源码分析:SQL拆解(BaseQueriable,BaseModelQueriable)_第1张图片

Queriable 存在的意义?

The most basic interface that some of the classes such as Insert, ModelQueriable, Set, and more implement for convenience.
为其他的类提供便捷的操作。

有哪些便携操作?

DBFlow源码分析:SQL拆解(BaseQueriable,BaseModelQueriable)_第2张图片

BaseQueriable 做了基本的实现

  1. count


    DBFlow源码分析:SQL拆解(BaseQueriable,BaseModelQueriable)_第3张图片
  2. hasData
    通过count来具体的实现:


    DBFlow源码分析:SQL拆解(BaseQueriable,BaseModelQueriable)_第4张图片
  3. query
    执行查询语句:


    DBFlow源码分析:SQL拆解(BaseQueriable,BaseModelQueriable)_第5张图片
  4. execute
    通过query来具体的实现:


    DBFlow源码分析:SQL拆解(BaseQueriable,BaseModelQueriable)_第6张图片
  5. compileStatement
    获得编译后的语句:


    DBFlow源码分析:SQL拆解(BaseQueriable,BaseModelQueriable)_第7张图片

BaseModelQueriable

** 实现了对 model的相关查询**

  1. 查询一个


    DBFlow源码分析:SQL拆解(BaseQueriable,BaseModelQueriable)_第8张图片
  2. 查询一堆


    DBFlow源码分析:SQL拆解(BaseQueriable,BaseModelQueriable)_第9张图片

** 实现了对 自定义model 的相关查询**

  1. 查询一个


    DBFlow源码分析:SQL拆解(BaseQueriable,BaseModelQueriable)_第10张图片
  2. 查询一堆


    DBFlow源码分析:SQL拆解(BaseQueriable,BaseModelQueriable)_第11张图片

转变为其它的便捷使用对象

  1. FlowCursorList:

对cursor的包装,便于在listview,或类似的控件中使用。


DBFlow源码分析:SQL拆解(BaseQueriable,BaseModelQueriable)_第12张图片
  1. FlowQueryList:

内部使用了FlowCursorList,但是它继承于FlowContentObserver,拥有观察数据改变的能力


DBFlow源码分析:SQL拆解(BaseQueriable,BaseModelQueriable)_第13张图片
  1. AsyncQuery
    实现异步查询


  2. CursorResult
    持有cursor对象,提供便捷的方法访问cursor。


    DBFlow源码分析:SQL拆解(BaseQueriable,BaseModelQueriable)_第14张图片

你可能感兴趣的:(DBFlow源码分析:SQL拆解(BaseQueriable,BaseModelQueriable))