文章目录
- Java API
- Spring 集成
- 1. 添加依赖
- 2. 配置 MongoDB
- 3. 创建实体类
- 4. 创建 Repository 接口
- 5. 创建 Service 类
- 6. 创建 Controller 类
- 7. 启动 Spring Boot 应用
- 8. 测试你的 API
更多相关内容可查看
Java API
maven
<dependency><groupId>org.mongodb</groupId><artifactId>mongo-java-driver</artifactId><version>3.12.6</version>
</dependency>
调用代码
java">private static final String MONGO_HOST = "xxx.xxx.xxx.xxx";private static final Integer MONGO_PORT = 27017;private static final String MONGO_DB = "testdb";public static void main(String args[]) {try {// 连接到 mongodb 服务MongoClient mongoClient = new MongoClient(MONGO_HOST, MONGO_PORT);// 连接到数据库MongoDatabase mongoDatabase = mongoClient.getDatabase(MONGO_DB);System.out.println("Connect to database successfully");// 创建CollectionmongoDatabase.createCollection("test");System.out.println("create collection");// 获取collectionMongoCollection<Document> collection = mongoDatabase.getCollection("test");// 插入documentDocument doc = new Document("name", "MongoDB").append("type", "database").append("count", 1).append("info", new Document("x", 203).append("y", 102));collection.insertOne(doc);// 统计countSystem.out.println(collection.countDocuments());// query - firstDocument myDoc = collection.find().first();System.out.println(myDoc.toJson());// query - loop allMongoCursor<Document> cursor = collection.find().iterator();try {while (cursor.hasNext()) {System.out.println(cursor.next().toJson());}} finally {cursor.close();}} catch (Exception e) {System.err.println(e.getClass().getName() + ": " + e.getMessage());}}
Spring 集成
Spring runtime体系图
Spring Data是基于Spring runtime体系的
Spring Data MongoDB 是 Spring Data 项目的一部分,用于简化与 MongoDB 的交互。通过 Spring Data MongoDB,我们可以轻松地将 MongoDB 数据库的操作与 Spring 应用集成,并且能够以声明式的方式进行数据访问,而无需直接编写大量的 MongoDB 操作代码。
官方文档地址:https://docs.spring.io/spring-data/mongodb/docs/3.0.3.RELEASE/reference/html/#mongo.core
具体代码如下:
以下是一个使用 Spring Data MongoDB 的基本示例,展示了如何将 MongoDB 集成到 Spring Boot 应用中,执行 CRUD 操作。
1. 添加依赖
首先,在 pom.xml
文件中添加 Spring Data MongoDB 相关的依赖:
<dependencies><!-- Spring Boot Starter Web, 用于构建 RESTful API --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Spring Boot Starter Data MongoDB, 用于集成 MongoDB --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency><!-- Spring Boot Starter Test, 用于测试 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- 其他依赖 -->
</dependencies>
2. 配置 MongoDB
在 application.properties
或 application.yml
文件中配置 MongoDB 数据源信息。假设你在本地运行 MongoDB,连接信息如下:
# application.properties 示例spring.data.mongodb.uri=mongodb://localhost:27017/mydb
你也可以单独指定 host
、port
和 database
,如下所示:
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=mydb
3. 创建实体类
定义一个实体类,并使用 @Document
注解标注它为 MongoDB 文档。Spring Data MongoDB 会将此类映射到 MongoDB 中的集合。
java">package com.example.mongodb.model;import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;@Document(collection = "users") // 指定 MongoDB 中集合的名称
public class User {@Id // 标注主键private String id;private String name;private String email;// 构造方法、Getter 和 Setterpublic User() {}public User(String name, String email) {this.name = name;this.email = email;}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 String getEmail() {return email;}public void setEmail(String email) {this.email = email;}
}
4. 创建 Repository 接口
Spring Data MongoDB 提供了 MongoRepository
接口,你可以通过扩展该接口来定义自己的数据访问层。MongoRepository
提供了很多默认的方法,比如 save()
、findById()
、findAll()
等。
java">package com.example.mongodb.repository;import com.example.mongodb.model.User;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;@Repository
public interface UserRepository extends MongoRepository<User, String> {// 你可以根据需要定义自定义查询方法User findByName(String name);
}
5. 创建 Service 类
Service 层将调用 Repository 层进行数据操作。
java">package com.example.mongodb.service;import com.example.mongodb.model.User;
import com.example.mongodb.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class UserService {private final UserRepository userRepository;@Autowiredpublic UserService(UserRepository userRepository) {this.userRepository = userRepository;}// 保存一个用户public User saveUser(User user) {return userRepository.save(user);}// 根据用户名查询用户public User findByName(String name) {return userRepository.findByName(name);}// 获取所有用户public Iterable<User> findAllUsers() {return userRepository.findAll();}// 删除一个用户public void deleteUser(String userId) {userRepository.deleteById(userId);}
}
6. 创建 Controller 类
Controller 层暴露 RESTful API,以便客户端能够与系统交互。
java">package com.example.mongodb.controller;import com.example.mongodb.model.User;
import com.example.mongodb.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;@RestController
@RequestMapping("/users")
public class UserController {private final UserService userService;@Autowiredpublic UserController(UserService userService) {this.userService = userService;}// 创建用户@PostMappingpublic User createUser(@RequestBody User user) {return userService.saveUser(user);}// 根据用户名查询用户@GetMapping("/{name}")public User getUserByName(@PathVariable String name) {return userService.findByName(name);}// 获取所有用户@GetMappingpublic Iterable<User> getAllUsers() {return userService.findAllUsers();}// 删除用户@DeleteMapping("/{id}")public void deleteUser(@PathVariable String id) {userService.deleteUser(id);}
}
7. 启动 Spring Boot 应用
确保你有一个运行中的 MongoDB 实例,并且配置了连接属性。
接下来,可以启动你的 Spring Boot 应用:
java">package com.example.mongodb;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class MongoApplication {public static void main(String[] args) {SpringApplication.run(MongoApplication.class, args);}
}
8. 测试你的 API
启动应用后,你可以使用 Postman 或其他 HTTP 客户端来测试你的 API。
- POST
/users
:创建用户 - GET
/users/{name}
:根据用户名查询用户 - GET
/users
:获取所有用户 - DELETE
/users/{id}
:根据 ID 删除用户
以上一个简单的MongoDB使用就完善了,在业务中更多的也是如此的CRUD,后续文章会写一些关于MongoDB的底层原理,毕竟面试要造火箭