【Spring连载】使用Spring Data访问 MongoDB(一)----快速指南
- 一、版本要求
- [二、Hello World](#二、Hello World)
- 三、连接到MongoDB
一、版本要求
Spring Data MongoDB 4.x二进制文件需要JDK级别17及以上版本和Spring Framework 6.1.4及以上版本。
在数据库和驱动程序方面,你需要至少4.x版本的MongoDB和兼容的MongoDB Java驱动程序(4.x或5.x)。
二、Hello World
首先,需要设置一个正在运行的MongoDB服务器。请参考MongoDB安装指南,了解如何启动MongoDB实例。安装后,启动MongoDB通常是运行以下命令:/bin/mongod然后你可以创建一个Person类来持久化:
java
package org.springframework.data.mongodb.example;
public class Person {
private String id;
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
你还需要一个主应用程序来运行:
java
package org.springframework.data.mongodb.example;
import static org.springframework.data.mongodb.core.query.Criteria.*;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.MongoTemplate;
import com.mongodb.client.MongoClients;
public class MongoApplication {
public static void main(String[] args) throws Exception {
MongoOperations mongoOps = new MongoTemplate(MongoClients.create(), "database");
mongoOps.insert(new Person("Joe", 34));
System.out.println(mongoOps.query(Person.class).matching(where("name").is("Joe")).firstValue());
mongoOps.dropCollection("person");
}
}
当你运行主程序时,上面的例子产生如下输出:
text
10:01:32,265 DEBUG o.s.data.mongodb.core.MongoTemplate - insert Document containing fields: [_class, age, name] in collection: Person
10:01:32,765 DEBUG o.s.data.mongodb.core.MongoTemplate - findOne using query: { "name" : "Joe"} in db.collection: database.Person
Person [id=4ddbba3c0be56b7e1b210166, name=Joe, age=34]
10:01:32,984 DEBUG o.s.data.mongodb.core.MongoTemplate - Dropped collection [database.person]
即使在这个简单的例子中,也有值得注意的几点:
- 你可以通过使用标准或反应式(reactive)MongoClient对象和要使用的数据库名称来实例化Spring Mongo的中心助手类MongoTemplate。
- mapper针对标准POJO对象工作,而不需要任何额外的元数据(尽管你可以选择提供这些信息,参见)。
- 约定用于处理id字段,将其存储在数据库中时转换为ObjectId。
- 映射约定可以使用字段访问。请注意,Person类只有getter。
- 如果构造函数参数名称与存储文档的字段名称匹配,则它们用于实例化对象