以面向對象的方式看待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語句的?