Open In App

Spring Boot Integration With MongoDB as a Maven Project

Last Updated : 11 Oct, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

MongoDB is a NoSQL database and it is getting used in software industries a lot because there is no strict schema like RDBMS that needs to be observed. It is a document-based model and less hassle in the structure of the collection. In this article let us see how it gets used with SpringBoot as a Maven project.

Implementation

Project Structure:

Project Structure

 

As it is a maven project, let’s start with adding dependencies via 

pom.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>


File to mention the connectivity with MongoDB database

application.properties

#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

Let’s start with the bean (document) file first

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);
}


Let’s add the service file now

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;
    }
}


Now let’s go to the controller file

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 !";
        }
    }
}


Main file that contains the main method and can be used to run as a Java application 

Application.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);
    }
}


Steps to clean the project

mvn clean install # As this is maven project

Run the project

mvn spring-boot:run

Output:

Spring Boot Integration With MongoDB as a Maven Project Output

 

We can test the same in the below ways. First, let us add the book

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

 

Now list out the books

URL: http://localhost:8080/getAllBooks

 

Let’s add 2 more books

 

We can search books by means of category 

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

 

Similarly, we can do it by bookId as well

 

Like this, we can do all business logic as per our needs. It is quite easier to integrate MongoDB with SpringBoot technologies.



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads