Spring Boot整合MongoDB
前言
No SQL 数据库有诸多的应用场景,在web开发中整合SpringBoot无疑会大大加快开发流程
提示:以下是本篇文章正文内容,下面案例可供参考
一、SpringBoot配置
1、pom依赖
pom文件如下:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
在application.properties中写入MongoDB连接语句
spring.data.mongodb.uri = mongodb://127.0.0.1:27017/数据库名
文件目录结构如下:
2.创建User类
代码如下(示例):
package domin;
import lombok.Builder;
import lombok.Data;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.MongoId;
@Data
@Document("user") //用来映射到数据库集合
@Builder
public class User {
// @MongoId
// private String _id;
private int uid;
private int money;
private String name;
private String[] pwd;
}
3. 测试
package com.chi.mongodb02;
import domin.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;
@SpringBootTest
class MongoDb02ApplicationTests {
@Autowired
private MongoTemplate mongoTemplate;
@Test
void contextLoads() {
String[] pwd = new String[]{"sd","1654","5646"};
User user = User.builder()
.uid(2023001)
.money(3000)
.name("李白")
.pwd(pwd)
.build();
mongoTemplate.insert(user);
System.out.println(user);
}
}
运行结果:
可以看到记录已经存储,但是多存储了一个_class字段
这样做的好处是:
- 数据分布和查询:在 MongoDB 中,文档是松散结构的,这意味着同一个集合中的文档可以具有不同的字段。通过在文档中保存类名信息,可以帮助区分不同类的文档。这在查询和数据分布时可能会有用。
- 多态性支持:在实际应用中,可能会有不同的 Java 类型映射到同一个 MongoDB 集合。保存类名信息可以帮助在查询时确定要将文档转换为哪个具体的 Java 类型。这是实现多态性的一种方式。
- 文档迁移和版本控制:保存类名信息可以帮助你更轻松地进行文档迁移和版本控制。当你的 Java 类发生变化时,可以根据类名信息来处理不同版本的文档。
但是也需要注意一些潜在的问题。如果你不需要类名信息或者认为它在你的应用中没有用处,你可以选择不保存它,或者根据需要使用自定义的方式来处理。在 Spring Data MongoDB 中,你可以通过配置来控制是否保存类名信息。通常,保存类名信息是默认启用的,但你可以禁用它,以减小存储开销或更好地符合你的应用需求。