Интеграция Spring Boot с MongoDB как проект Maven
MongoDB — это база данных NoSQL, и она широко используется в индустрии программного обеспечения, потому что нет строгой схемы, такой как RDBMS, которую необходимо соблюдать. Это модель на основе документов и меньше хлопот в структуре коллекции. В этой статье давайте посмотрим, как он используется с SpringBoot в качестве проекта Maven.
Реализация
Структура проекта:
Поскольку это проект maven, давайте начнем с добавления зависимостей через
пом.xml
XML
<?xml version="1.0" encoding="UTF-8"?> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 <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;@Servicepublic 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;@RestControllerpublic 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;@SpringBootApplicationpublic 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 гораздо проще.