在本文中,我们将学习如何将 Spring Boot 应用程序与 MongoDB 数据库连接并访问 MongoDB 数据库中的数据。 MongoDB 是一个跨平台的面向文档的 数据库,通常称为NoSQL 数据库。 MongoDB 是一个文档数据库,这意味着它将数据存储在 JSON-like 文档中。
Spring 提供了内置的接口和注释,有助于访问和连接 MongoDB 数据库,例如:
MongoRepository<*T*, *ID*>
是一个提供类似于 CrudRepository 接口的基本 CRUD 方法的接口。@Document
注释有助于定义类似于 @Table
注释的文档名称。###我们将构建什么
在此页面上,我们将创建一个全新的 Spring Boot 应用程序,并将该应用程序与 MongoDB 数据库连接起来,以从数据库中插入和获取数据。
查找此应用程序中使用的所有工具和技术的列表。
1.IntelliJ IDEA
使用 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 中的应用程序的最终项目结构如下所示:
创建一个简单的 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
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://www.websparrow.org/spring/getting-started-with-spring-boot-and-mongodb
内容来源于网络,如有侵权,请联系作者删除!