mongoDB-Criteria

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);

猜你喜欢

转载自www.cnblogs.com/sheng-yang/p/11880925.html