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

以面向对象的方式看待sql

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

结构

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

Queriable 存在的意义?

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

有哪些便携操作?

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

BaseQueriable 做了基本的实现

  1. count

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

  2. hasData
    通过count来具体的实现:

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

  3. query
    执行查询语句:

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

  4. execute
    通过query来具体的实现:

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

  5. compileStatement
    获得编译后的语句:

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

BaseModelQueriable

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

  1. 查询一个

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

  2. 查询一堆

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

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

  1. 查询一个

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

  2. 查询一堆

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

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

  1. FlowCursorList:

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

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

  1. FlowQueryList:

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

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

  1. AsyncQuery
    实现异步查询

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

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

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

    原文作者:linheimx
    原文地址: https://www.jianshu.com/p/0d84f3f6e04e
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞