Spring Data MongoDB 教程

Criteria 类简介

Criteria 类用于创建查询的中心类,它遵循流畅的 API 风格,因此您可以轻松地将多个条件链接在一起。

Criteria.where 方法的静态导入提高了可读性。

使用 Criteria 类定义查询时的查询条件相当于 SQL 的 where。

常用方法介绍

  • where(String key)  静态方法,用它可以很方便的定义查询条件,例如:

mongoTemplate.find(Query.query(
    Criteria.where("parameter3").lt(new Date())
        .and("parameter2").regex("es"))
)
  • and(String key)  与操作

  • gt(Object o)  大于

  • gte(Object o)  大于等于

  • in(Object... o)  包含

  • is(Object o)  等于

  • lt(Object o)  小于

  • lte(Object o)  小于等于

  • not()  非

  • regex(String re)  正则表达式

  • andOperator(Criteria... criteria)  创建与操作

  • orOperator(Criteria... criteria)  创建或操作

  • size(int size)  创建 $size 操作

示例

演示 Criteria 类的基本用法,代码如下:

package com.hxstrive.springdata.mongodb.query;

import com.hxstrive.springdata.mongodb.entity.Person;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.MongoTemplate;
import java.util.List;
import static org.springframework.data.mongodb.core.query.Criteria.where;
import static org.springframework.data.mongodb.core.query.Query.query;

@SpringBootTest
public class QueryDocumentDemo {

   @Autowired
   private MongoTemplate mongoTemplate;

   @Test
   public void contextLoads() {
       // 删除集合,清空数据
       mongoTemplate.dropCollection(Person.class);

       // 准备数据
       mongoTemplate.insert(Person.builder().id("1").name("Tom").age(22).build());
       mongoTemplate.insert(Person.builder().id("2").name("Helen").age(29).build());
       mongoTemplate.insert(Person.builder().id("3").name("Bill").age(37).build());
       mongoTemplate.insert(Person.builder().id("4").name("Joe").age(48).build());

       // 查询数据
       // 年龄小于30岁,且名称中包含 “l” 字符
       List<Person> result = mongoTemplate.query(Person.class)
               .matching(query(where("age").lt(30).and("name").regex("l")))
               .all();
       for(Person person : result) {
           System.out.println(person);
       }
   }

}

运行示例,输出如下:

Person(id=2, name=Helen, age=29, version=0)

注意:上面静态导入了 Criteria.where 和 Query.query 两个便捷方法。

在后续章节中将逐一介绍 Criteria 的各个方法用法。

说说我的看法
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号