Spring Boot 集成 MongoDB 的简单入门

在现代应用开发中,Spring Boot 已经成为了开发 RESTful API 和微服务的流行框架。与此同时,MongoDB 作为一种非关系型数据库,因为其灵活性和高性能,越来越受欢迎。本篇文章将介绍如何在 Spring Boot 中集成 MongoDB,并附上代码示例。

MongoDB 基础

MongoDB 是一种面向文档的 NoSQL 数据库,使用 BSON(JavaScript Object Notation)格式存储数据。它的灵活数据模型适合存储各种结构的数据,使得开发人员可以快速迭代。

环境搭建

首先,我们需要创建一个 Spring Boot 项目,并添加 MongoDB 相关的依赖。在 pom.xml 中加入以下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

创建实体类

接下来,我们需要创建一个简单的实体类,比如 User 并创建 MongoDB 的相关配置。

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;

    // Getter and Setter
    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;
    }
}

建立 Repository 接口

使用 Spring Data MongoDB,我们简单地扩展 MongoRepository 接口来进行数据访问:

import org.springframework.data.mongodb.repository.MongoRepository;
import java.util.Optional;

public interface UserRepository extends MongoRepository<User, String> {
    Optional<User> findByName(String name);
}

创建服务类

接下来,创建服务类,负责业务逻辑的实现:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Optional;

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    public List<User> getAllUsers() {
        return userRepository.findAll();
    }

    public Optional<User> getUserByName(String name) {
        return userRepository.findByName(name);
    }

    public void createUser(User user) {
        userRepository.save(user);
    }
}

创建控制器

最后,我们创建一个控制器来处理请求:

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;

    @GetMapping
    public List<User> getAllUsers() {
        return userService.getAllUsers();
    }

    @PostMapping
    public void createUser(@RequestBody User user) {
        userService.createUser(user);
    }
}

数据库关系图

通过以下的 Mermaid 语法,我们可以简单地表示出 User 实体与 MongoDB 数据库之间的关系:

erDiagram
    USERS {
        String id PK
        String name
        int age
    }

类图

以下是使用 Mermaid 表示的类图,展示了 User, UserRepository, UserService, UserController 之间的关系:

classDiagram
    class User {
        +String id
        +String name
        +int age
    }

    class UserRepository {
        +List<User> findAll()
        +Optional<User> findByName(name: String)
        +void save(user: User)
    }

    class UserService {
        +List<User> getAllUsers()
        +Optional<User> getUserByName(name: String)
        +void createUser(user: User)
    }

    class UserController {
        +List<User> getAllUsers()
        +void createUser(user: User)
    }

    UserRepository <|-- UserService
    UserService <|-- UserController

小结

到这里,我们已经完成了一个简单的 Spring Boot 与 MongoDB 的集成示例。通过这个例子,我们可以看到如何利用 Spring Data MongoDB 来简化数据的 CRUD 操作。希望本文能为你在实际项目中使用 MongoDB 提供帮助,未来你也可以探索更多的特性和高级用法。