Spring Boot 和 MongoDB 入门

x33g5p2x  于2021-10-15 转载在 Go  
字(6.3k)|赞(0)|评价(0)|浏览(419)

在本文中,我们将学习如何将 Spring Boot 应用程序与 MongoDB 数据库连接并访问 MongoDB 数据库中的数据。 MongoDB 是一个跨平台的面向文档的 数据库,通常称为NoSQL 数据库。 MongoDB 是一个文档数据库,这意味着它将数据存储在 JSON-like 文档中。

Spring 提供了内置的接口和注释,有助于访问和连接 MongoDB 数据库,例如:

  • MongoRepository<*T*, *ID*> 是一个提供类似于 CrudRepository 接口的基本 CRUD 方法的接口。
  • @Document 注释有助于定义类似于 @Table 注释的文档名称。

###我们将构建什么

在此页面上,我们将创建一个全新的 Spring Boot 应用程序,并将该应用程序与 MongoDB 数据库连接起来,以从数据库中插入和获取数据。

使用的技术

查找此应用程序中使用的所有工具和技术的列表。

1.IntelliJ IDEA

  1. JDK 8
  2. Spring Boot 2.3.3.RELEASE
  3. MongoDB 4.4.1 数据库
  4. Maven 3.6

需要依赖

使用 MongoDB 访问数据,应用程序类路径中必须提供以下依赖项。
pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>org.websparrow</groupId>
    <artifactId>springboot-mongodb</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot-mongodb</name>

    <properties>
        <java.version>1.8</java.version>
    </properties>

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

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

项目结构

我们在 IntelliJ IDEA IDE 中的应用程序的最终项目结构如下所示:

定义一个简单的文档 (POJO)

创建一个简单的 Employee 类及其属性,并生成 getter 和 setter 以及参数化构造函数。
Employee.java

package org.websparrow.dto;

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Document
public class Employee {

    @Id
    private String id;
    private String firstName;
    private String lastName;
    private Character gender;
    private int age;
    // Generate Getters and Setters...

    public Employee() {
    }

    public Employee(String firstName, String lastName, Character gender, int age) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.gender = gender;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Employee{" +
                "id='" + id + '\'' +
                ", firstName='" + firstName + '\'' +
                ", lastName='" + lastName + '\'' +
                ", gender=" + gender +
                ", age=" + age +
                '}';
    }
}

默认情况下,Spring Data MongoDB 使用类名在 MongoDB 数据库中创建集合名称。我们可以使用类上的 @Document(collection = "*employees*") 注释来更改集合名称。

创建存储库

为了使用 MongoDB 数据库进行查询,EmployeeRepository 接口将扩展 MongoRepository<*T*, *ID*> 接口,该接口提供基本的 CRUD 操作方法,我们还可以创建我们的派生 findBy 查询方法。
EmployeeRepository.java

package org.websparrow.repository;

import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;
import org.websparrow.dto.Employee;

import java.util.List;

@Repository
public interface EmployeeRepository extends MongoRepository<Employee, String> {

    List<Employee> findByFirstName(String firstName);
    List<Employee> findByGender(Character gender);
}

定义数据库连接字符串

application.properties 文件用于定义 MongoDB 数据库连接字符串。
application.properties

#Database connection strings
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=springboot
spring.data.mongodb.username={db-username}
spring.data.mongodb.password={your-secret-password}

默认情况下,如果我们不定义连接参数,Spring Data 会尝试在 localhost:27017/test 连接应用程序。

执行

最后一步是执行应用程序。为此,创建一个 Spring Boot 运行器类,即实现 CommandLineRunner 接口的 SpringBootMongoDBApp。覆盖它的 run() 方法并调用 EmployeeRepository 接口所需的方法。
SpringBootMongoDBApp.java

package org.websparrow;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.websparrow.dto.Employee;
import org.websparrow.repository.EmployeeRepository;

import java.util.List;

@SpringBootApplication
public class SpringBootMongoDBApp implements CommandLineRunner {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootMongoDBApp.class, args);
    }

    @Autowired
    private EmployeeRepository employeeRepository;

    @Override
    public void run(String... args) throws Exception {

        // Save the employees
        employeeRepository.save(new Employee("Atul", "Rai", 'M', 28));
        employeeRepository.save(new Employee("Pallavi", "Tripathi", 'F', 25));
        employeeRepository.save(new Employee("Manish", "Fartiyal", 'M', 30));
        employeeRepository.save(new Employee("Lucifer", "**", 'F', 33));

        // Fetch the all employees
        List<Employee> employees = employeeRepository.findAll();
        System.out.println("============ List of all employees ============");
        System.out.println(employees);

        // Fetch the all employees by first name
        List<Employee> employeesByFirstName = employeeRepository.findByFirstName("Manish");
        System.out.println("============ List of all employees by first name ============");
        System.out.println(employeesByFirstName);

        // Fetch the all employees by gender
        List<Employee> employeesByGender = employeeRepository.findByGender('F');
        System.out.println("============ List of all employees by gender ============");
        System.out.println(employeesByGender);

    }
}

输出

成功执行后,您将在 IDE 控制台日志中找到以下输出。
控制台日志

============ List of all employees ============
[
	Employee{id='5f66fcebf00ba2568d60b7e0', firstName='Atul', lastName='Rai', gender=M, age=28}, Employee{id='5f66fcebf00ba2568d60b7e1', firstName='Pallavi', lastName='Tripathi', gender=F, age=25}, Employee{id='5f66fcebf00ba2568d60b7e2', firstName='Manish', lastName='Fartiyal', gender=M, age=30}, Employee{id='5f66fcebf00ba2568d60b7e3', firstName='Lucifer', lastName='**', gender=F, age=33}
]
============ List of all employees by first name ============
[
	Employee{id='5f66fcebf00ba2568d60b7e2', firstName='Manish', lastName='Fartiyal', gender=M, age=30}
]
============ List of all employees by gender ============
[
	Employee{id='5f66fcebf00ba2568d60b7e1', firstName='Pallavi', lastName='Tripathi', gender=F, age=25}, Employee{id='5f66fcebf00ba2568d60b7e3', firstName='Lucifer', lastName='**', gender=F, age=33}
]

要验证它,您还可以检查 MongoDB 数据库。

`` 下载源代码:getting-started-with-spring-boot-and-mongodb.zip

相关文章

微信公众号

最新文章

更多