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