【Spring连载】使用Spring Data访问 MongoDB(一)----快速指南

【Spring连载】使用Spring Data访问 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。
  • 如果构造函数参数名称与存储文档的字段名称匹配,则它们用于实例化对象

三、连接到MongoDB

相关推荐
鬼手点金4 小时前
Agent 的学习机制:后训练、上下文学习与外部化学习
java·人工智能·git·学习·自动化·nanogpt
小陈不好吃4 小时前
equals 与 hashCode 的契约关系:从 HashMap 到 Lombok 注解
java·hashmap·lombok
xiaogai_gai4 小时前
金蝶收料通知单查询策略实战教程:从源系统拉取到中间层落地的完整路径
java·前端·数据库
打工仔折腾 AI5 小时前
用 Dashlet 把极空间 NAS 服务入口整理成统一导航首页的实践
java·开发语言·人工智能·后端·python·rpc·ai agent 实战
Song_RsHt5 小时前
Gateway(下):过滤器与统一鉴权
spring boot·spring·gateway
小蒜学长6 小时前
微信小程序-高校自习室管理系统(代码+数据库+LW)
java·spring boot·后端·微信小程序·自习室管理
鸥梨菌Honevid6 小时前
UVM 中 REQ 和 RSP 类型详解:从通信模型到 item_done 与 put_response
java·前端·servlet
瑞克-桑切斯6 小时前
真实企业场景 运维安全与管理
java·网络·github
老板一杯拿铁7 小时前
Java 八股文面试详解:从基础到进阶的全面梳理
java·面试
const_qiu7 小时前
第 2.5 章 2.5.4-2.5.5:JWT 双 Token 与声明式权限守卫
java·人工智能