MongoDB是一个基于文档的开源的NoSQL数据库,被广泛应用于高并发、高扩展可快速迭代开发的应用场景中,与传统的关系型数据库有所不同的是,MongoDB的数据存储并不需要表、行和列等数据存储结构,MongoDB的数据存储是以文档(Document)的方式进行的存储。所以在灵活性和高可用性上成为了现代很多应用数据库开发的首选。而下面我们就来介绍一下如何在Spring Boot3中集成并且使用MongoDB。
添加依赖
??在Spring Boot3中使用MongoDB与Spring Boot2中的集成步骤类似,可以通过Spring Data MongoDB来简化MongoDB数据库的操作。首先,就需要我们引入Spring Data MongoDB的依赖,如下所示。
org.springframework.boot
spring-boot-starter-data-mongodb
??依赖添加完成之后,接下来我们就需要配置与MongoDB数据库的连接参数,如下所示。
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=mydatabase
spring.data.mongodb.username=myuser
spring.data.mongodb.password=mypassword
??或者可以使用Yaml的方式来进行配置
spring:
data:
mongodb:
uri: mongodb://localhost:27017/mydatabase
创建模型类
??通过Spring Data MongoDB来整合MongoDB的时候,我们可以通过@Document注解来映射MongoDB中的集合与Java对象之间的关系,如下所示,创建一个模型类并且通过@Document注解来进行映射。
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
@Document(collection = "users")
public class User {
@Id
private String id;
private String name;
private String email;
// getters and setters
}
??映射完成之后,接下来就可以利用Spring Data MongoDB提供的CURD的操作来完成对于数据的CRUD操作,我们需要继承MongoRepository接口来实现相关的操作。
import org.springframework.data.mongodb.repository.MongoRepository;
public interface UserRepository extends MongoRepository {
// 可以自定义查询方法
User findByName(String name);
}
??接下来,我们就可以在服务类或者是在控制器中直接使用这个UserRepository进行操作,如下所示。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public User createUser(String name, String email) {
User user = new User();
user.setName(name);
user.setEmail(email);
return userRepository.save(user);
}
public User getUserByName(String name) {
return userRepository.findByName(name);
}
}
测试接口
??我们可以定义Controller层的RESTFul接口来测试MongoDB对于数据CRUD的操作功能。
@RestController
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/createUser")
public String createUser(@RequestParam String name, @RequestParam String email) {
userService.createUser(name, email);
return "User created successfully!";
}
@GetMapping("/getUser")
public User getUser(@RequestParam String name) {
return userService.getUserByName(name);
}
}
总结
??上面我们介绍了通过Spring Data MongoDB来实现对于MongoDB的CRUD的操作,当然除了上面提供的这种方式之外MongoDB还提供了其他交互方式,例如可以通过MongoTemplate来进行精细化的数据操作,或者是对数据进行一些复杂的查询操作。如果需要有一些自定义的操作的话还可以通过原生驱动的方式来进行编码。如果想去做一些响应式的开发MongoDB也提供了Reactive MongoDB进行响应式的编程。当然,每种方式都适合于不同的数据处理场景,我们可以根据自己的实际需求来选择合适的技术。