Интеграция 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; @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 гораздо проще.