下面就是 SpringBoot 整合 MongoDB 完整攻略:
MongoDB 是一款文档型数据库,而 SpringBoot 是当前最流行的 Java Web 开发框架之一。结合使用这两者,我们可以轻松的完成高效、灵活的数据存储操作。
在本文中,我们将通过两个实例来演示如何在 SpringBoot 中使用 MongoDB 实现增删改查操作。
首先,在创建 SpringBoot 项目时应该加入 MongoDB 和 SpringData MongoDB 的依赖。打开 pom.xml
文件,添加以下内容:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
在 src/main/resources
目录下新建 application.properties
文件,并配置 MongoDB 连接信息:
# MongoDB 连接信息
spring.data.mongodb.uri=mongodb://localhost:27017/test
为了让 MongoDB 知道我们需要存储的数据结构,我们需要定义一个对应的数据模型。在 src/main/java
下创建相应的实体类 User.java
:
package xyz.luronix.springmongo.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Document(collection = "users")
public class User {
@Id
private String id;
private String name;
}
上述代码中,我们使用 @Document
注解将该实体类映射到 MongoDB 的 users
集合。同时,我们用 @Id
注解将 id
字段作为文档的唯一标识符。
在 src/main/java
目录下,创建 MongoUserRepository.java
接口,并继承 MongoRepository
接口:
package xyz.luronix.springmongo.repository;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;
import xyz.luronix.springmongo.entity.User;
@Repository
public interface MongoUserRepository extends MongoRepository<User, String> {
}
这里 MongoUserRepository
继承了 MongoRepository
接口,并通过泛型指定了实体类 User
和 id
的类型 String
。SpringData MongoDB 会自动为我们实现增删改查等操作。
在服务层中,我们通过调用 MongoUserRepository
中的方法来完成对 MongoDB 的操作。这里我们采用了比较常用的 RESTful 风格的 API 接口,因此我们需要创建一个 RESTful Controller。
在 src/main/java
目录下,创建 UserController.java
控制器:
package xyz.luronix.springmongo.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import xyz.luronix.springmongo.entity.User;
import xyz.luronix.springmongo.repository.MongoUserRepository;
import java.util.List;
@RestController
@RequestMapping(path = "/api/users")
public class UserController {
@Autowired
private MongoUserRepository userRepository;
@GetMapping("")
public ResponseEntity<List<User>> findAll() {
return ResponseEntity.ok(userRepository.findAll());
}
@GetMapping("/{id}")
public ResponseEntity<User> findById(@PathVariable String id) {
return userRepository.findById(id).map(ResponseEntity::ok)
.orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND));
}
@PostMapping("")
public ResponseEntity<User> save(@RequestBody User user) {
return ResponseEntity.status(HttpStatus.CREATED)
.body(userRepository.save(user));
}
@PutMapping("")
public ResponseEntity<User> update(@RequestBody User user) {
return userRepository.existsById(user.getId()) ? ResponseEntity.ok(userRepository.save(user))
: new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
@DeleteMapping("/{id}")
public ResponseEntity<Void> delete(@PathVariable String id) {
userRepository.deleteById(id);
return ResponseEntity.ok().build();
}
}
同样,在创建 SpringBoot 项目时应该加入 MongoDB 和 SpringData MongoDB 的依赖。打开 pom.xml
文件,添加以下内容:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
在 src/main/resources
目录下新建 application.properties
文件,并配置 MongoDB 连接信息:
# MongoDB 连接信息
spring.data.mongodb.uri=mongodb://localhost:27017/test
在服务层中,我们通过调用 MongoTemplate
来实现 MongoDB 数据库的查询操作。在 src/main/java
目录下创建 MongoQueryService.java
文件,并编写以下代码:
package xyz.luronix.springmongo.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Service;
import xyz.luronix.springmongo.entity.User;
import java.util.List;
@Service
public class MongoQueryService {
@Autowired
private MongoTemplate mongoTemplate;
public List<User> findAll() {
return mongoTemplate.findAll(User.class);
}
public User findById(String id) {
return mongoTemplate.findById(id, User.class);
}
public List<User> findByName(String name) {
return mongoTemplate.find(query(where("name").is(name)), User.class);
}
public User save(User user) {
return mongoTemplate.insert(user);
}
public User update(User user) {
return mongoTemplate.save(user);
}
public void deleteById(String id) {
mongoTemplate.remove(query(where("id").is(id)), User.class);
}
}
在 MongoQueryService
中,我们使用 MongoTemplate
提供的方法来完成 MongoDB 数据库的查询。例如,我们使用 findAll()
方法来查询所有用户,使用 findById()
方法来根据 id
查找单个用户,使用 findByName()
方法来根据名称查找用户列表,使用 save()
方法来插入记录,使用 update()
方法来更新记录,使用 deleteById()
方法来删除记录。
本文详细介绍了 SpringBoot 整合 MongoDB 的步骤。在实际开发中,使用 MongoDB 进行数据存储具有可扩展性、数据模型灵活和高效的特点。通过这里的示例,相信各位读者对于使用 SpringBoot 和 MongoDB 进行开发有了更为深入和全面的了解。
本文链接:http://task.lmcjl.com/news/18613.html