真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

使用MongoDB和SpringBoot怎么創(chuàng)建一個(gè)CRUD應(yīng)用

本篇文章給大家分享的是有關(guān) 使用MongoDB和Spring Boot怎么創(chuàng)建一個(gè)CRUD應(yīng)用,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到仁布網(wǎng)站設(shè)計(jì)與仁布網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名申請(qǐng)雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋仁布地區(qū)。

MongoDB是什么?

MongoDB是一個(gè)NOSQL文檔數(shù)據(jù)庫(kù)。在這個(gè)數(shù)據(jù)庫(kù)中,記錄是document,其行為很像JSON對(duì)象。所以它主要是鍵值對(duì)。

使用MongoDB作為數(shù)據(jù)庫(kù)的主要優(yōu)點(diǎn)是:

  • MongoDB是一種無(wú)模式文檔數(shù)據(jù)庫(kù)。一個(gè)集合包含不同的文檔。

  • 單個(gè)對(duì)象的結(jié)構(gòu)是清晰的。

  • 沒(méi)有復(fù)雜的連接。

  • 深查詢能力。

  • 易于擴(kuò)展。

以下是在企業(yè)應(yīng)用中使用MongoDB或類似的NoSql數(shù)據(jù)庫(kù)的幾個(gè)原因:

  • 更快的JSON數(shù)據(jù)檢索。

  • 很容易在屬性上添加索引。

  • 用于分片——分片是跨多臺(tái)機(jī)器存儲(chǔ)數(shù)據(jù)記錄的過(guò)程。在跨多臺(tái)機(jī)器存儲(chǔ)數(shù)據(jù)時(shí),通常會(huì)根據(jù)某些標(biāo)準(zhǔn)對(duì)數(shù)據(jù)進(jìn)行分區(qū)。

  • 更新快。

  • 容易查詢。

先決條件

要?jiǎng)?chuàng)建這個(gè)示例應(yīng)用程序,你需要:

  • Spring Boot(版本2.4.1)

  • MongoDB

  • Gradle

  • Java

Spring Boot CRUD應(yīng)用程序

作為本文的一部分,我將構(gòu)建一個(gè)REST CRUD應(yīng)用程序。這包括

  • 一個(gè)圖書(shū)館-我們將在MongoDB數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)圖書(shū)館集合。

  • 我們將按作者來(lái)存放這些書(shū)。

  • 用戶可以調(diào)用REST API按作者檢索圖書(shū)。

  • 用戶可以調(diào)用REST API來(lái)檢索圖書(shū)館中的所有圖書(shū)。

  • POST - /v1/mongodbapp/books -添加一本書(shū)。

  • GET - /v1/mongodbapp/books——從庫(kù)中檢索所有的圖書(shū)。

  • GET - /v1/mongodbapp/books/id -檢索特定的圖書(shū)。

  • DELETE—/v1/mongodbapp/books/id—從庫(kù)中刪除一本書(shū)。

如何使用MongoDB和Spring Boot CRUD

為了開(kāi)始創(chuàng)建這個(gè)應(yīng)用程序,我們將使用gradle來(lái)處理我們的依賴并構(gòu)建應(yīng)用程序。在Spring Boot應(yīng)用程序中添加以下依賴項(xiàng):

implementation 'org.springframework.boot:spring-boot-starter-data-mongodb' implementation 'org.springframework.boot:spring-boot-starter-web'

一旦我們有了這些依賴,我們將能夠連接到mongodb數(shù)據(jù)庫(kù)。但是我們?nèi)匀恍枰砑訑?shù)據(jù)庫(kù)的位置。我們將在application.properties中添加所需的屬性。如下:

spring.data.mongodb.host = localhostspring.data.mongodb.port=27017 spring.data.mongodb.database=library

這將允許我們連接到運(yùn)行在主機(jī)localhost上的端口27017上的MongoDB數(shù)據(jù)庫(kù),并且數(shù)據(jù)庫(kù)是library。

定義數(shù)據(jù)模型

作為圖書(shū)館的一部分,我們將需要書(shū)籍。我們的主要數(shù)據(jù)對(duì)象是Book。這個(gè)數(shù)據(jù)模型將包括書(shū)名、作者和ISBN。具體內(nèi)容如下:

package com.betterjavacode.mongodbdemo.mongodbapp.models;import org.springframework.data.annotation.Id;import org.springframework.data.mongodb.core.mapping.Document;@Document(collection = "books")public class Book{ @Id private String id; private String title; private String author; private String isbn; public Book() { } public Book(String title, String author, String isbn) { this.title = title; this.author = author; this.isbn = isbn; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public String getIsbn() { return isbn; } public void setIsbn(String isbn) { this.isbn = isbn; }}

因?yàn)槲覀兪褂玫氖荕ongoDB,所以@Document注釋覆蓋了集合書(shū)籍。

添加Repository接口

我們需要一個(gè)Repository庫(kù)接口來(lái)獲取、保存或刪除book對(duì)象。在repositories包中,我們將添加BookRepository接口:

package com.betterjavacode.mongodbdemo.mongodbapp.repositories;import com.betterjavacode.mongodbdemo.mongodbapp.models.Book;import org.springframework.data.mongodb.repository.MongoRepository;import java.util.List;public interface BookRepository extends MongoRepository{ List findByTitleContaining(String title); List findByAuthor(String name);}

這個(gè)Repository庫(kù)有兩個(gè)方法:可以通過(guò)標(biāo)題或作者姓名獲取圖書(shū)。

添加Spring REST API控制器

現(xiàn)在,為了使我們的應(yīng)用程序REST CRUD,我們將添加一個(gè)REST控制器。這個(gè)控制器將包含POST、PUT、GET和DELETE API。

package com.betterjavacode.mongodbdemo.mongodbapp.controller;import com.betterjavacode.mongodbdemo.mongodbapp.models.Book;import com.betterjavacode.mongodbdemo.mongodbapp.repositories.BookRepository;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.http.HttpStatus;import org.springframework.http.ResponseEntity;import org.springframework.web.bind.annotation.*;import java.util.ArrayList;import java.util.List;import java.util.Optional;@CrossOrigin("http://localhost:8080")@RestController@RequestMapping("/v1/mongodbapp")public class BookController{ @Autowired BookRepository bookRepository; @GetMapping("/books") public ResponseEntity getAllBooks(@RequestParam(required = false) String bookTitle) { try { List listOfBooks = new ArrayList<>(); if(bookTitle == null || bookTitle.isEmpty()) { bookRepository.findAll().forEach(listOfBooks::add);} else { bookRepository.findByTitleContaining(bookTitle).forEach(listOfBooks::add); } if (listOfBooks.isEmpty()) { return new ResponseEntity<>(HttpStatus.NO_CONTENT); } return new ResponseEntity<>(listOfBooks, HttpStatus.OK); } catch (Exception e) { return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR); } } @GetMapping("/books/{id}") public ResponseEntity getBookById(@PathVariable("id") String id) { try { Optional bookOptional = bookRepository.findById(id); return new ResponseEntity<>(bookOptional.get(), HttpStatus.OK); } catch (Exception e) { return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR); } } @PostMapping("/books") public ResponseEntity addABookToLibrary(@RequestBody Book book) { try { Book createdBook = bookRepository.save(new Book(book.getTitle(), book.getAuthor(), book.getIsbn())); return new ResponseEntity<>(createdBook, HttpStatus.CREATED); } catch (Exception e) { return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR); } } @PutMapping("/books/{id}") public ResponseEntity updateABook(@PathVariable("id") String id, @RequestBody Book book) { Optional bookOptional = bookRepository.findById(id); if (bookOptional.isPresent()) { Book updatedBook = bookOptional.get(); updatedBook.setTitle(book.getTitle()); updatedBook.setAuthor(book.getAuthor()); updatedBook.setIsbn(book.getIsbn()); return new ResponseEntity<>(bookRepository.save(updatedBook), HttpStatus.OK); } else { return new ResponseEntity<>(HttpStatus.NOT_FOUND); } } @DeleteMapping("/books/{id}") public ResponseEntity deleteABook(@PathVariable("id") String id) { try { bookRepository.deleteById(id); return new ResponseEntity<>(HttpStatus.NO_CONTENT); } catch (Exception e) { return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); } }}

BookController 是我們的REST控制器類。它包括

  • @RestController -將其標(biāo)記為REST控制器。

  • @CrossOrigin -這個(gè)注釋允許跨源資源共享(CORS)。這將在REST響應(yīng)中添加CORS訪問(wèn)控制頭。這些頭是必需的,因?yàn)樗试S服務(wù)器不僅指定誰(shuí)可以訪問(wèn)資源,而且指定如何訪問(wèn)資源。

  • 我們添加了不同的方法——addabooktolilibrary將書(shū)籍添加到數(shù)據(jù)庫(kù),getAllBooks從數(shù)據(jù)庫(kù)中檢索書(shū)籍。

完整的演示

現(xiàn)在我們已經(jīng)添加了REST控制器、Repository庫(kù)方法,我們將構(gòu)建并運(yùn)行這個(gè)應(yīng)用程序。作為演示的一部分,我將使用POSTMAN來(lái)訪問(wèn)API。

可以從命令行或正在使用的代碼編輯器構(gòu)建應(yīng)用程序。我更喜歡命令行,所以我已經(jīng)構(gòu)建了應(yīng)用程序。一旦編譯完成,你就可以像下面這樣運(yùn)行程序:

java -jar mongodbapp-0.0.1-SNAPSHOT.jar

讓我們用POSTMAN給我們的圖書(shū)館添加書(shū)籍。

使用MongoDB和Spring Boot怎么創(chuàng)建一個(gè)CRUD應(yīng)用

如上所示,我們添加了一本書(shū),響應(yīng)將在數(shù)據(jù)庫(kù)中顯示已添加的書(shū)。

下面的API是一個(gè)GET API,用于從數(shù)據(jù)庫(kù)中獲取所有書(shū)籍。

使用MongoDB和Spring Boot怎么創(chuàng)建一個(gè)CRUD應(yīng)用

現(xiàn)在,為了顯示從庫(kù)中刪除圖書(shū),我們將使用delete API。

使用MongoDB和Spring Boot怎么創(chuàng)建一個(gè)CRUD應(yīng)用

以上就是 使用MongoDB和Spring Boot怎么創(chuàng)建一個(gè)CRUD應(yīng)用,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)頁(yè)題目:使用MongoDB和SpringBoot怎么創(chuàng)建一個(gè)CRUD應(yīng)用
網(wǎng)頁(yè)URL:http://weahome.cn/article/ghgeij.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部