Spring Boot – MongoRepository con ejemplo

Spring Boot está construido en la parte superior del resorte y contiene todas las características del resorte. Y se está convirtiendo en el favorito de los desarrolladores en estos días debido a su rápido entorno listo para producción que les permite concentrarse directamente en la lógica en lugar de luchar con la configuración y la instalación. Spring Boot es un marco basado en microservicios y crear una aplicación lista para producción lleva muy poco tiempo. Las siguientes son algunas de las características de Spring Boot:

  • Permite evitar la configuración pesada de XML que está presente en primavera.
  • Proporciona fácil mantenimiento y creación de puntos finales REST
  • Incluye servidor Tomcat incorporado
  • La implementación es muy fácil, los archivos war y jar se pueden implementar fácilmente en el servidor tomcat

Para obtener más información, consulte este artículo: Introducción a Spring Boot . En este artículo, discutiremos cómo usar MongoRepository  para administrar datos en una aplicación Spring Boot.

MongoRepositorio 

MongoRepository es una interfaz proporcionada por Spring Data en el paquete org.springframework.data.mongodb.repository . MongoRepository amplía las interfaces PagingAndSortingRepository y QueryByExampleExecutor que amplían aún más la interfaz CrudRepository . MongoRepository proporciona todos los métodos necesarios que ayudan a crear una aplicación CRUD y también admite los métodos de consulta derivados personalizados.

Sintaxis:

public interface MongoRepository<T,ID> extends PagingAndSortingRepository<T,ID>, QueryByExampleExecutor<T>

Dónde:

  • T: tipo de dominio que administra el repositorio (generalmente el nombre de clase de la entidad/modelo)
  • ID: Tipo de id de la entidad que administra el repositorio (Generalmente la clase contenedora de su @Id que se crea dentro de la clase Entidad/Modelo)

Ilustración:

public interface BookRepo extends MongoRepository<Book, Integer> {}

Métodos

Algunos de los métodos más importantes que están disponibles dentro de JpaRepository se detallan a continuación.

Método 1: saveAll(): Guarda todas las entidades dadas.

Sintaxis:

<S extends T> List<S> saveAll(Iterable<S> entities)

Parámetros : Entidades, no deben ser nulas ni deben contener nulas.

Tipo de devolución : las entidades guardadas; nunca será nulo. El Iterable devuelto tendrá el mismo tamaño que el Iterable pasado como argumento.

Excepción lanzada : IllegalArgumentException en caso de que las entidades dadas o una de sus entidades sea nula.

Método 2: insert(): Inserta la entidad dada. Supone que la instancia es nueva para poder aplicar optimizaciones de inserción. Utilice la instancia devuelta para otras operaciones, ya que la operación de guardar podría haber cambiado la instancia de la entidad por completo. 

Sintaxis:

<S extends T> S insert(S entity)

Parámetros : entidad – no debe ser nulo

Tipo de devolución : la entidad guardada

Método 3. findAll(): Devuelve todas las instancias del tipo.

Sintaxis:

Iterable<T> findAll()

Tipo de devolución : Todas las entidades

Implementación:

Haremos una aplicación Spring Boot que administre una entidad Libro con MongoRepository. Los datos se guardan en la base de datos MongoDB. Usamos un controlador RESTful.

Paso 1: cree un proyecto Spring Boot con IntelliJ IDEA y cree un proyecto Spring Boot. 

Paso 2: agregue la siguiente dependencia

  • Telaraña de primavera
  • MongoDB
  • Lombok
  • Herramientas de desarrollo

A continuación se muestra el código completo para el archivo  pom.xml .

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.6.0</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    
    <groupId>com.globallogic</groupId>
    <artifactId>spring-mongodb</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>spring-mongodb</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>11</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
  
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
  
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
  
</project>

Paso 3 : cree 3 paquetes y cree algunas clases e interfaces dentro de estos paquetes como se ve en la imagen a continuación

  • modelo
  • repositorio
  • controlador

Nota :

  • Icono verde redondeado ‘I’ Los botones son interfaz
  • Los botones ‘C’ de icono redondeado azul son clases

Paso 4: dentro del paquete de entidad

Creando una clase POJO simple dentro del archivo Book.java.

Java

// Java Program to Illustrate Book File
  
// Importing required classes
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
  
// Annotations
@Data
@NoArgsConstructor
@AllArgsConstructor
@Document(collection = "Book")
  
// Class
public class Book {
  
    // Attributes
    @Id 
    private int id;
    private String bookName;
    private String authorName;
}

Paso 5: dentro del paquete del repositorio

Cree una interfaz simple y nombre la interfaz como BookRepo . Esta interfaz ampliará el MongoRepository como hemos discutido anteriormente.

Java

// java Program to Illustrate BookRepo File
  
import com.globallogic.spring.mongodb.model.Book;
import org.springframework.data.mongodb.repository.MongoRepository;
  
public interface BookRepo
    extends MongoRepository<Book, Integer> {
}

Paso 6: dentro del paquete del controlador

Dentro del paquete, cree una clase llamada BookController .

Java

import com.globallogic.spring.mongodb.model.Book;
import com.globallogic.spring.mongodb.repository.BookRepo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
  
import java.util.List;
  
// Annotation 
@RestController
  
// Class 
public class BookController {
  
    @Autowired
    private BookRepo repo;
  
    @PostMapping("/addBook")
    public String saveBook(@RequestBody Book book){
        repo.save(book);
        
        return "Added Successfully";
    }
  
    @GetMapping("/findAllBooks")
    public List<Book> getBooks() {
        
        return repo.findAll();
    }
  
    @DeleteMapping("/delete/{id}")
    public String deleteBook(@PathVariable int id){
        repo.deleteById(id);
        
        return "Deleted Successfully";
    }
  
}

Paso 7: a continuación se muestra el código para el archivo application.properties

server.port = 8989

# MongoDB Configuration
server.port:8989
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=BookStore

Paso 8: Dentro de MongoDB Compass

Vaya a su MongoDB Compass y cree una base de datos llamada BookStore y dentro de la base de datos cree una colección llamada Book como se ve en la imagen de abajo

Ahora ejecute su aplicación y probemos los puntos finales en Postman y también consulte nuestro MongoDB Compass.

Probando el Endpoint en Postman

Extremo 1: POST – http://localhost:8989/addBook

Punto final 2: GET – http://localhost:8989/findAllBooks

Extremo 3: ELIMINAR – http://localhost:8989/delete/1329

Finalmente, MongoDB Compass es como se muestra en la imagen a continuación como se muestra a continuación de la siguiente manera:

Publicación traducida automáticamente

Artículo escrito por AmiyaRanjanRout y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *