org.springframework.data.mongodb.core.query中Criteria類
相當於SQL中的where條件
屬性說明:
private static final Object NOT_SET = new Object(); @Nullable // 存放屬性值 private String key; // 存放一系列條件 private List<Criteria> criteriaChain; // map集合,也是用來存放條件,除了is方法代表的條件外 // 其他的包括lt,lte,gt,gte,ne,in,nin,mod,all,size,exists,not,regex等方法都是存放到此map集合中。 private LinkedHashMap<String, Object> criteria = new LinkedHashMap(); @Nullable // 用來存放is方法傳進來的值 private Object isValue;
方法(where、and):
// 靜態方法,用類名或實例對象調用,他會創建一個Criteria對象,把參數傳給此對象的key,返回這個對象 public static Criteria where(String key) { return new Criteria(key); }
// 實例方法,用criteria對象調用此方法,他會創建並返回一個新的對象,原先的Criteria對象被放在criteriachain屬性中傳給新對象的criteriachain public Criteria and(String key) { return new Criteria(this.criteriaChain, key); }
說明:
通過where創建的新對象的criteriachain屬性是在構造方法中new出來的,而通過and的話是作為構造方法的參數傳進去的。
一個criteria對象只保存一個條件,多個條件通過多個criteria對象保存,每創建一個criteria對象都會把自身添加到自己的criteriachain屬性中。
如果重復使用where創建對象,以前的條件就會丟失,因為他的criteriachain是新建的。
eg.
Criteria criteria = new Criteria();
criteria.and(key).is(value);
