我们还是按照管理,在学习一门新技术前,先编写一个 “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 查看结果,如下图: