注册

SpringBoot整合MongoDB的步骤详解

下面就是 SpringBoot 整合 MongoDB 完整攻略:

概述

MongoDB 是一款文档型数据库,而 SpringBoot 是当前最流行的 Java Web 开发框架之一。结合使用这两者,我们可以轻松的完成高效、灵活的数据存储操作。

在本文中,我们将通过两个实例来演示如何在 SpringBoot 中使用 MongoDB 实现增删改查操作。

示例 1:创建 MongoDB 数据库

步骤 1:引入依赖

首先,在创建 SpringBoot 项目时应该加入 MongoDB 和 SpringData MongoDB 的依赖。打开 pom.xml 文件,添加以下内容:


    org.springframework.boot
    spring-boot-starter-data-mongodb

步骤 2:创建 MongoDB 配置文件

src/main/resources 目录下新建 application.properties 文件,并配置 MongoDB 连接信息:

# MongoDB 连接信息
spring.data.mongodb.uri=mongodb://localhost:27017/test

步骤 3:创建实体类

为了让 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 字段作为文档的唯一标识符。

步骤 4:创建 MongoDB 操作接口

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 {

}

这里 MongoUserRepository 继承了 MongoRepository 接口,并通过泛型指定了实体类 Userid 的类型 String。SpringData MongoDB 会自动为我们实现增删改查等操作。

步骤 5:编写服务层代码

在服务层中,我们通过调用 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> findAll() {
        return ResponseEntity.ok(userRepository.findAll());
    }

    @GetMapping("/{id}")
    public ResponseEntity findById(@PathVariable String id) {
        return userRepository.findById(id).map(ResponseEntity::ok)
                .orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND));
    }

    @PostMapping("")
    public ResponseEntity save(@RequestBody User user) {
        return ResponseEntity.status(HttpStatus.CREATED)
                .body(userRepository.save(user));
    }

    @PutMapping("")
    public ResponseEntity update(@RequestBody User user) {
        return userRepository.existsById(user.getId()) ? ResponseEntity.ok(userRepository.save(user))
                : new ResponseEntity<>(HttpStatus.NOT_FOUND);
    }

    @DeleteMapping("/{id}")
    public ResponseEntity delete(@PathVariable String id) {
        userRepository.deleteById(id);
        return ResponseEntity.ok().build();
    }

}

实例 2:查询 MongoDB 数据库

步骤 1:引入依赖

同样,在创建 SpringBoot 项目时应该加入 MongoDB 和 SpringData MongoDB 的依赖。打开 pom.xml 文件,添加以下内容:


    org.springframework.boot
    spring-boot-starter-data-mongodb

步骤 2:创建 MongoDB 配置文件

src/main/resources 目录下新建 application.properties 文件,并配置 MongoDB 连接信息:

# MongoDB 连接信息
spring.data.mongodb.uri=mongodb://localhost:27017/test

步骤 3:编写查询代码

在服务层中,我们通过调用 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 findAll() {
        return mongoTemplate.findAll(User.class);
    }

    public User findById(String id) {
        return mongoTemplate.findById(id, User.class);
    }

    public List 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 进行开发有了更为深入和全面的了解。