Spring Boot集成Spring Data MongoDB实现MongoDB操作
1. 添加依赖
在pom.xml
文件中添加Spring Data MongoDB的依赖。如果你使用的是Spring Boot 3.x,依赖如下:
<dependencies>
<!-- Spring Boot Starter Data MongoDB -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
</dependencies>
如果你使用的是Spring Boot 2.x,依赖类似,但版本号会有所不同。
2. 配置MongoDB连接
在application.properties
或application.yml
文件中配置MongoDB的连接信息。以下是常见的配置项:
application.properties
# MongoDB配置
spring.data.mongodb.uri=mongodb://username:password@host:port/database
spring.data.mongodb.database=your_database_name
spring.data.mongodb.host=127.0.0.1
spring.data.mongodb.port=27017
application.yml
yaml复制
spring:
data:
mongodb:
uri: mongodb://username:password@host:port/database
database: your_database_name
host: 127.0.0.1
port: 27017
如果MongoDB没有用户名和密码,可以省略username
和password
部分。
3. 创建MongoDB实体类
创建一个实体类,用@Document
注解标注,表示这是一个MongoDB的集合(Collection)。
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 int age;
// Getters and Setters
public String getId() {
return id;
}
public void setId(String 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;
}
}
4. 创建MongoDB操作接口
Spring Data MongoDB提供了MongoRepository
接口,可以自动生成CRUD操作的方法。
import org.springframework.data.mongodb.repository.MongoRepository;
public interface UserRepository extends MongoRepository<User, String> {
// 自定义查询方法
List<User> findByName(String name);
}
通过继承MongoRepository
,你可以直接使用以下方法:
-
save()
:保存或更新文档 -
findById()
:根据ID查询文档 -
findAll()
:查询所有文档 -
deleteById()
:根据ID删除文档
5. 使用MongoDB操作
在Service层或Controller层中注入UserRepository
,并使用它来操作MongoDB。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public User saveUser(User user) {
return userRepository.save(user);
}
public List<User> getAllUsers() {
return userRepository.findAll();
}
public User getUserById(String id) {
return userRepository.findById(id).orElse(null);
}
public List<User> getUsersByName(String name) {
return userRepository.findByName(name);
}
public void deleteUserById(String id) {
userRepository.deleteById(id);
}
}
6. 测试
启动Spring Boot应用后,你可以通过Controller层调用UserService
的方法来测试MongoDB的CRUD操作。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
@PostMapping
public User createUser(@RequestBody User user) {
return userService.saveUser(user);
}
@GetMapping
public List<User> getAllUsers() {
return userService.getAllUsers();
}
@GetMapping("/{id}")
public User getUserById(@PathVariable String id) {
return userService.getUserById(id);
}
@GetMapping("/name/{name}")
public List<User> getUsersByName(@PathVariable String name) {
return userService.getUsersByName(name);
}
@DeleteMapping("/{id}")
public void deleteUserById(@PathVariable String id) {
userService.deleteUserById(id);
}
}
7. 注意事项
-
MongoDB版本兼容性:确保MongoDB的版本与Spring Data MongoDB的版本兼容。
-
索引优化:如果需要高性能查询,可以在实体类中使用
@Indexed
注解为字段添加索引。 -
事务支持:MongoDB从4.0开始支持事务,Spring Data MongoDB也支持事务管理,但需要配置事务管理器。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步