解析--andOperator--方法

andOperator方法

它的機制是:新建一個criteria對象放到當前criteria對象的criteriaChain屬性中。

 

關於這個新建的criteria對象:

它的key屬性是$and

它的isValue值比較特別,是一個list集合,集合中是dbObject對象。

 

dbObject對象由來:

此方法會傳進來一個(或多個)criteria對象,首先會遍歷這個對象的criteriaChain屬性,這樣就可以得到它的全部的criteria對象,即關於多個屬性的條件,關於每一個屬性的條件,都會生成一個dbObjce對象,多個屬性就會得到多個dbObject對象,這個對象相當於一個map集合,它的鍵值就是屬性名,也就是criteria對象的key值,它的值是一個dbObject對象。這個對象的結構是:key-valuemap或者是key--map

(個人認爲前一種情況中的map應該爲空,也就是說要麼是key--value或者是key--map,因爲key--value代表key是什麼,而key--map表示key的約束,比如取值範圍3<key<4,這樣的形式存到map中就是兩組值,一個表示大於3,一個表示小於4

也就是說對應於多個屬性的約束條件,會生成多個dbObject 對象,對象的值就是key--value或者key--map。然後又有一個新的dbObject對象把這些dbObject對象整合到一起,這個總的dbObject對象就是方法參數中的那個criteria對象對應生成的,如果傳入的是多個criteria對象,那麼就會產生多個dbObject,然後把這些dbObject放到list集合中,這個list就是那個isValue的值。

 

PS

1.此對象中的criteriachain屬性中可能包含着好幾個屬性的約束條件,對應於每一個屬性,都會有一個criteria對象,criteria對象的屬性:keyisValue

map集合都是描述當前某個條件的,它的criteriaChain屬性就是把好多個屬性封裝到一起.

 

2.封裝key--value或者key--map的那個dbObject對象中應該只有一組數據,因爲key不能重複,一個criteria對應一個dbObjectdbObject中的鍵值就是criteriakey值,而criteria只有一個key值。

 

3.DBObject是一個接口,這個接口的實現類basicDBObject實現了map接口,雖然它不是一個map,但它裏面定義了一些針對map集合的操作。

 

概述過程是:

一個criteria對象,它的key$and,它的isValue是一個list集合

List集合中放的是dbObject對象,dbObject對象中有一個map集合,集合的每一個鍵名對應一個屬性名(實體類的屬性,如age屬性),它的值就是criteria對象的map或者isValue的值。

 

其他的如:orOperatornotOperator是一樣的。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章