Интеграция Spring Boot с MongoDB как проект Maven

Опубликовано: 6 Января, 2023

MongoDB — это база данных NoSQL, и она широко используется в индустрии программного обеспечения, потому что нет строгой схемы, такой как RDBMS, которую необходимо соблюдать. Это модель на основе документов и меньше хлопот в структуре коллекции. В этой статье давайте посмотрим, как он используется с SpringBoot в качестве проекта Maven.

Реализация

Структура проекта:

Поскольку это проект maven, давайте начнем с добавления зависимостей через

пом.xml

XML




<?xml version="1.0" encoding="UTF-8"?>
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                             http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
 
    <groupId>com.gfg</groupId>
    <artifactId>SpringBoot_MongoDB_SampleProject</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
 
    <name>SpringBoot_MongoDB_SampleProject</name>
    <description>SpringBoot_MongoDB_SampleProject</description>
 
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.RELEASE</version>
        <relativePath/>
    </parent>
 
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>
 
    <dependencies>
        <dependency>
            <!-- For MongoDB connectivity -->
            <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>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

Файл, в котором упоминается связь с базой данных MongoDB.

приложение.свойства

#mongodb properties
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=geeksforgeeks # Change the database as per your choice here

Сначала начнем с файла bean (документа)

Book.java

Java




import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
 
@Document(collection = "book")
public class Book {
   
    @Id
    private String id;
 
    private long bookId;
 
    private String isbnNumber;
 
    private String category;
 
    private String bookName;
 
    public String getId() {
        return id;
    }
 
    public void setId(String id) {
        this.id = id;
    }
 
    public long getBookId() {
        return bookId;
    }
 
    public void setBookId(long bookId) {
        this.bookId = bookId;
    }
 
    public String getIsbnNumber() {
        return isbnNumber;
    }
 
    public void setIsbnNumber(String isbnNumber) {
        this.isbnNumber = isbnNumber;
    }
 
    public String getCategory() {
        return category;
    }
 
    public void setCategory(String category) {
        this.category = category;
    }
 
    public String getBookName() {
        return bookName;
    }
 
    public void setBookName(String bookName) {
        this.bookName = bookName;
    }
}

BookRepository.java

Java




import java.util.List;
import org.springframework.data.mongodb.repository.MongoRepository;
import com.gfg.docs.Book;
 
public interface BookRepository extends MongoRepository<Book,Long> {
    // Need to add all the required methods here
    List<Book> findByCategory(String category);
    Book findByBookId(long bookId);
}

Теперь добавим сервисный файл

BookService.java

Java




import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.gfg.docs.Book;
import com.gfg.repository.BookRepository;
 
@Service
public class BookService {
    @Autowired
    BookRepository bookRepository;
    public List<Book> getAllBooks(){
        return bookRepository.findAll();
    }
 
    // Getting a specific book by category from collection
    public List<Book> getBookByCategory(String category){
        List<Book> book = bookRepository.findByCategory(category);
        return book;
    }
 
    // Getting a specific book by book id from collection
    public Book getBookByBookId(long bookId){
        Book book = bookRepository.findByBookId(bookId);
        return book;
    }
     
      // Adding/inserting a book into collection
    public Book addBook(long id,String isbnNumber, String bookName,String category) {
        Book book = new Book();
        book.setCategory(category);
        book.setBookId(id);
        book.setBookName(bookName);
        book.setIsbnNumber(isbnNumber);
        return bookRepository.save(book);
    }
   
    // Delete a book from collection
    public int deleteBook(long bookId){
        Book book = bookRepository.findByBookId(bookId);
        if(book != null){
            bookRepository.delete(book);
            return 1;
        }
        return -1;
    }
}

Теперь переходим к файлу контроллера

BookController.java

Java




import com.gfg.docs.Book;
import com.gfg.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
 
@RestController
public class BookController {
 
    @Autowired
    BookService bookService;
    @RequestMapping("/getAllBooks")
    @ResponseBody
    public List<Book> getBooks(){
        return bookService.getAllBooks();
    }
 
    @RequestMapping("/getBook")
    @ResponseBody
    public List<Book> getBook(@RequestParam("category") String category){
        return bookService.getBookByCategory(category);
    }
 
    @RequestMapping("/getBookById")
    @ResponseBody
    public Book getBookById(@RequestParam("bookId") long bookId){
        return bookService.getBookByBookId(bookId);
    }
 
    @RequestMapping("/addBook")
    @ResponseBody
    public String addBook(@RequestParam("bookId") long bookId,@RequestParam("isbnNumber") String isbnNumber,
                          @RequestParam("bookName") String bookName,
                          @RequestParam("category") String category){
        if(bookService.addBook(bookId,isbnNumber,bookName,category) != null){
            return "Book got  Added Successfully";
        }else{
            return "Something went wrong !";
        }
    }
   
    @RequestMapping("/deleteBook")
    @ResponseBody
    public String deleteBook(@RequestParam("bookId") int bookId){
        if(bookService.deleteBook(bookId) == 1){
            return "Book got  Deleted Successfully";
        }else{
            return "Something went wrong !";
        }
    }
}

Основной файл, который содержит основной метод и может использоваться для запуска в качестве приложения Java.

Приложение.java

Java




import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
 
@SpringBootApplication
public class Application {
 
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

Шаги по очистке проекта

mvn clean install # As this is maven project

Запустить проект

mvn spring-boot:run

Выход:

Мы можем проверить то же самое следующими способами. Сначала добавим книгу

URL: http://localhost:8080/addBook?bookId=1&isbnNumber=12345&bookName=JavaBasics&category=Programming

Теперь перечислите книги

URL: http://localhost:8080/getAllBooks

Добавим еще 2 книги

Мы можем искать книги по категориям

URL: http://localhost:8080/getBook?category=Programming

Точно так же мы можем сделать это и по bookId

Таким образом, мы можем выполнять всю бизнес-логику в соответствии с нашими потребностями. Интегрировать MongoDB с технологиями SpringBoot гораздо проще.