DBFlow源碼分析:SQL拆解(Condition)

以面向對象的方式看待sql

sql語句由好多部分組成。
把每一部分抽象出類。

Condition

翻譯:條件

什么是條件?

舉個例子:
有一張學生表,其中有個 age 字段,現在有這樣的需求:查找出所有年齡大于18歲的學生。

sql: select from student where age>18;

where 后面的 age>18就是條件。

1.分拆元素

條件需要的幾個元素:

DBFlow將這幾個元素抽象為 SQLCondition:

元素 SQLCondition
列名稱 columnName
操作符 operation
value

2.對屬性的操作

對列名這個屬性,我們對他們會有很多操作:
age=18
age>18
age is null
...

在DBFlow中 IConditional來描述這些操作:


屬性實現了這個接口:

具體的實現,借給了condition來處理

3. 結合

元素與 操作的結合:


4. 例子

針對name屬性來構造一個條件:name="lijian"

針對屬性的eq方法,它實際上調用了 Condition的eq方法。

屬性Property中的操作方法是對condition的包裝

列名,操作符,數值都準備好了,那么它是怎么生成sql語句的?

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,765評論 18 399
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,941評論 18 139
  • Spark SQL, DataFrames and Datasets Guide Overview SQL Dat...
    Joyyx閱讀 8,348評論 0 16
  • 今天得到app上李笑來老師給出的下周課題預告是:是什么決定了選擇?我腦子里第一反應就是四個字“從心所欲”。在兩年之...
    烏卓閱讀 411評論 1 0
  • 夢想許是幼稚, 理想應是新奇。 著迷又如何, 還不是得離去。 痛苦又如何, 誰又能擁有萬年的光景。 天上...
    古風長歌閱讀 272評論 1 3