我们还是按照管理,在学习一门新技术前,先编写一个 “Hello World” 程序,让 Spring Data MongoDB 正常运行起来。
为我们后续学习 Spring Data MongoDB 打下基础,提升信心。
注意:本章节将通过 Spring Boot 快速集成 Spring Data MongoDB。
使用浏览器访问 https://www.mongodb.com/try/download/community 官网下载地址,根据自己操作系统类型选择合适的版本。
如何安装 MongDB 请点击参考 https://www.hxstrive.com/article/780.htm 文章(针对 Windows10 操作系统)。
在 pom.xml 文件中添加如下依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency>
使用浏览器访问 https://start.spring.io/ 地址,在线创建一个 Spring Boot 项目,然后下载项目的 zip 包,解压后通过 IDEA 导入即可。或者直接使用 IDEA 进行创建 Spring Boot 项目,具体操作步骤不在赘述,读者自己 DIY。
到这里,已经是万事俱备,只剩下我们编写一个 “Hello World” 程序去敲开 Spring Data MongoDB 的大门。
定义一个 User 实体,该实体和 MongoDB 的 users 集合进行映射,然后使用 MongoTemplate 模板对象操作集合。
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
/**
* users 集合映射集合
* @author hxstrive 2022/12/19
*/
@Document(collection = "users")
public class User {
@Field("userId")
private long id;
@Field("name")
private String name;
@Field("age")
private int age;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}上面代码中,@Document 注释用来声明此类将被映射到 MongoDB 数据库的一个集合(collection 为集合名称)。@Field 注解用来映射集合中某条记录中的一个字段,其中 value 表示字段名称。
我们将使用一个 Spring Boot 单元测试类,来实现 User 对象写入到 MongoDB,然后又从 MongoDB 中取出 users 集合的数据。代码如下:
import com.huangx.springdata.mongondb.model.User;
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;
/**
* 第一个 Spring Data MongoDB 示例
*/
@SpringBootTest
class HelloWorld {
/** 自动注入 MongoDB 操作模板对象,类似 RedisTempalte */
@Autowired
private MongoTemplate mongoTemplate;
/**
* 向 users 集合写入数据,然后查询 users 集合中的所有记录
*/
@Test
void helloWorld() {
// 写入数据
User newUser = new User();
newUser.setId(1);
newUser.setName("Hxstrive");
newUser.setAge(28);
mongoTemplate.save(newUser);
// 查询数据
List<User> users = mongoTemplate.findAll(User.class, "users");
for(User user : users) {
System.out.println(user);
}
}
}运行示例,输出如下:
User{id=1, name='Hxstrive', age=28}使用 NoSQLBooster for MongoDB 查看结果,如下图:
