欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot整合MongoDB流程詳解

 更新時間:2024年01月08日 10:28:32   作者:探索er  
這篇文章主要介紹了SpringBoot整合MongoDB流程詳解,MongoDB是一種面向文檔的數(shù)據(jù)庫管理系統(tǒng),它是一個介于關系型數(shù)據(jù)庫和非關系型數(shù)據(jù)庫之間的產(chǎn)品,MongoDB支持一種類似JSON的BSON數(shù)據(jù)格式,既可以存儲簡單的數(shù)據(jù)格式,也可以存儲復雜的數(shù)據(jù)類型,需要的朋友可以參考下

1. MongoDB簡介

MongoDB是一種面向文檔的數(shù)據(jù)庫管理系統(tǒng),它是一個介于關系型數(shù)據(jù)庫和非關系型數(shù)據(jù)庫之間的產(chǎn)品。

MongoDB 功能豐富,它支持一種類似JSON的BSON數(shù)據(jù)格式,既可以存儲簡單的數(shù)據(jù)格式,也可以存儲復雜的數(shù)據(jù)類型。

MongoDB最大的特點是它支持的查詢語言非常強大,并且還支持對數(shù)據(jù)建立索引??傮w來說,MongoDB是一款應用相當廣泛的NoSQL數(shù)據(jù)庫。

2. MongoDB安裝

我用的是寶塔面板進行安裝的,安裝目錄是/www/server/mongodb。

對MongoDB配置文件config.conf修改,文件內(nèi)容如下:

  1. dbpath=/opt/mongodb/db
  2. logpath=/opt/mongodb/logs/mongodb. log
  3. port=27017
  4. fork=true

配置解釋:

  • 第1行配置表示數(shù)據(jù)存儲目錄。
  • 第2行配置表示日志文件位置。
  • 第3行配置表示啟動端口。
  • 第4行配置表示以守護程序的方式啟動MongoDB,即允許MongoDB在后臺運行。

3. MongoDB的啟動和關閉

配置完成后,還是在 bin目錄下,運行如下命令啟動MongoDB:./mongod -f mongo.conf --bind ip all -f表示指定配置文件的位置,–bind_ip_all則表示允許所有的遠程地址連接該 MongoDB實例.MongoDB啟動成功后,在 bin目錄下再執(zhí)行mongo命令,進入 MongoDB控制臺,然后輸入

./mongod -f ../config.conf --bind_ip_all

-f 表示指定配置文件的位置,–bind_ip_all 則表示允許所有的遠程地址連接該MongoDB實例。

MongoDB啟動成功后,在 bin目錄下再執(zhí)行 mongo命令,進入 MongoDB控制臺,然后輸入

.mongo
db.version()

默認情況下,啟動后連接的是 MongoDB中的test庫,而關閉MongoDB的命令需要在 admin庫中執(zhí)行,因此關閉MongoDB需要首先切換到admin庫,然后執(zhí)行db.shutdownServer();命令,完整操作步驟如下:

use admin;
db.shutdownServer();
exit

服務關閉后,執(zhí)行exit命令退出控制臺,此時如果再執(zhí)行./mongo命令就會執(zhí)行失敗。

4. 安全管理

默認情況下,啟動的MongoDB沒有登錄密碼,在生產(chǎn)環(huán)境中這是非常不安全的,但是不同于MySQL、Oracle等關系型數(shù)據(jù)庫,MongoDB中每一個庫都有獨立的密碼,在哪一個庫中創(chuàng)建用戶就要在哪一個庫中驗證密碼。要配置密碼,首先要創(chuàng)建一個用戶,例如在admin庫中創(chuàng)建一個用戶,代碼如下:

db.createUser({user:"suohechuan",pwd:"123@456",roles:[{role:"readWrite",db:"test"}]})

新創(chuàng)建的用戶名為 suohechuan,密碼是123@456,roles表示該用戶具有的角色,這里的配置表示該用戶對test 庫具有讀和寫兩項權限。 用戶創(chuàng)建成功后,關閉當前實例,然后重新啟動,啟動命令如下:

./mongod -f ../config.conf -auth --bind_ip_all

啟動成功后,再次進入控制臺,然后切換到admin庫中驗證登錄(默認連接上的庫是test庫),驗證成功后就可以對test庫執(zhí)行讀寫操作了,代碼如下:

./mongo
db.auth("suohechuan","123@456")

如果db.auth(“suohechuan”,“123@456”)命令執(zhí)行結果為1,就表示認證成功,可以執(zhí)行對test 庫的讀寫操作。

整合Spring Boot

借助于Spring Data MongoDB,Spring Boot 為 MongoDB也提供了開箱即用的自動化配置方案,具體配置步驟如下。

1. 創(chuàng)建Spring Boot工程

創(chuàng)建Spring Boot Web工程,添加MongoDB依賴,代碼如下:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

2. 配置MongoDB

在application.properties 中配置MongoDB的連接信息,代碼如下:

spring.data.mongodb.authentication-database=admin
spring.data.mongodb.database=test
spring.data.mongodb.host=170.0.0.1
spring.data.mongodb.port=27017
spring.data.mongodb.username=suohechuan
spring.data.mongodb.password=123@456

配置解釋:

  • 第1行配置表示驗證登錄信息的庫。
  • 第2行配置表示要連接的庫,認證信息不一定要在連接的庫中創(chuàng)建,因此這兩個分開配置。
  • 第3~6行配置表示MongoDB的連接地址和認證信息等

3. 創(chuàng)建實體類

創(chuàng)建實體類Book,代碼如下:

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Book implements Serializable {
    private Integer id;
    private String name;
    private String author;
}

4. 創(chuàng)建BookDao

BookDao 的定義類似于Spring Data JPA中的Repository定義,代碼如下:

@Repository
public interface BookDao extends MongoRepository<Book,Integer> {
    List<Book> findByAuthorContains (String author) ;
    Book findByNameEquals (String name) ;
}

MongoRepository中已經(jīng)預定義了針對實體類的查詢、添加、刪除等操作。BookDao 中可以按照JPA方法命名規(guī)則定義查詢方法。

5. 創(chuàng)建 Controller

簡單起見,直接將BookDao注入 Controller進行測試:

@RestController
public class BookController {
    @Autowired
    BookDao bookDao;

    @GetMapping("/test1")
    public void test1() {
        List<Book> books = new ArrayList<>();
        Book b1 = new Book();
        b1.setId(1);
        b1.setName("朝花夕拾");
        b1.setAuthor("魯迅");
        books.add(b1);
        Book b2 = new Book();
        b2.setId(2);
        b2.setName("吶喊");
        b2.setAuthor("魯迅");
        books.add(b2);
        bookDao.insert(books);
        List<Book> books1 = bookDao.findByAuthorContains("魯迅");
        System.out.println(books1);
        Book book = bookDao.findByNameEquals("朝花夕拾");
        System.out.println(book);
    }

    @Autowired
    MongoTemplate mongoTemplate;

    @GetMapping("/test2")

    public void test2() {
        List<Book> books = new ArrayList<>();
        Book b1 = new Book();
        b1.setId(3);
        b1.setName("圍城");
        b1.setAuthor("錢鐘書");
        books.add(b1);
        Book b2 = new Book();
        b2.setId(4);
        b2.setName("宋詩選注");
        b2.setAuthor("錢鐘書");
        books.add(b2);
        mongoTemplate.insertAll(books);
        List<Book> list = mongoTemplate.findAll(Book.class);
        System.out.println(list);
        Book book = mongoTemplate.findById(3, Book.class);
        System.out.println(book);
    }
}

代碼解釋:

  • 第19行調(diào)用MongoRepository中的insert方法插入集合中的數(shù)據(jù)。
  • 第20行表示查詢作者名字中包含“魯迅”的所有書。
  • 第22行表示查詢書名為“朝花夕拾”的圖書信息。

6. 測試 BookDao

創(chuàng)建好Controller 后,在瀏覽器中輸入/localhost:8080/test1,控制臺打印日志

[Book(id=1, name=朝花夕拾, author=魯迅), Book(id=2, name=吶喊, author=魯迅)]
Book(id=1, name=朝花夕拾, author=魯迅)

7. 使用MongoTemplate

除了繼承MongoRepository外,Spring Data MongoDB還提供了MongoTemplate用來方便地操作MongoDB。在 Spring Boot 中,若添加了MongoDB相關的依賴,而開發(fā)者并沒有提供MongoTemplate,則默認會有一個MongoTemplate 注冊到Spring 容器中,相關配置源碼在MongoDataAutoConfiguration類中。因此,用戶可以直接使用MongoTemplate,在 Controller中直接注入 MongoTemplate就可以使用了,添加如下代碼到第5步的Controller中:

@Autowired
MongoTemplate mongoTemplate;
@GetMapping("/test2")
public void test2() {
    List<Book> books = new ArrayList<>();
    Book b1 = new Book();
    b1.setId(3);
    b1.setName("圍城");
    b1.setAuthor("錢鐘書");
    books.add(b1);
    Book b2 = new Book();
    b2.setId(4);
    b2.setName("宋詩選注");
    b2.setAuthor("錢鐘書");
    books.add(b2);
    mongoTemplate.insertAll(books);
    List<Book> list = mongoTemplate.findAll(Book.class);
    System.out.println(list);
    Book book = mongoTemplate.findById(3, Book.class);
    System.out.println(book);
}

代碼解釋;

  • 第1、2行表示注入Spring Boot提供的MongoTemplate。
  • 第16行表示向MongoDB中插入一個集合。
  • 第17行表示查詢book 集合中的所有數(shù)據(jù)。第19行表示根據(jù)id查詢一個文檔。
  • 最后,在瀏覽器中輸入 http:/localhost:8080/test2,控制臺打印日志。

[Book(id=1, name=朝花夕拾, author=魯迅),Book(id=2, name=吶喊, author=魯迅), Book(id=3, name=圍城, author=錢鐘書), Book(id=4, name=宋詩選注, author=錢鐘書)]
Book(id=3, name=圍城, author=錢鐘書)

到此這篇關于SpringBoot整合MongoDB流程詳解的文章就介紹到這了,更多相關SpringBoot整合MongoDB內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java 整合模板徹底解決ssm配置難題

    Java 整合模板徹底解決ssm配置難題

    SSM框架是spring MVC ,spring和mybatis框架的整合,是標準的MVC模式,將整個系統(tǒng)劃分為表現(xiàn)層,controller層,service層,DAO層四層,使用spring MVC負責請求的轉(zhuǎn)發(fā)和視圖管理,spring實現(xiàn)業(yè)務對象管理,mybatis作為數(shù)據(jù)對象的持久化引擎
    2021-10-10
  • 自制Java工具實現(xiàn)翻譯鼠標選中文本

    自制Java工具實現(xiàn)翻譯鼠標選中文本

    這篇文章主要為大家詳細介紹了如何自制Java工具實現(xiàn)ctrl+c+c翻譯鼠標選中文本,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2024-01-01
  • Java static方法用法實戰(zhàn)案例總結

    Java static方法用法實戰(zhàn)案例總結

    這篇文章主要介紹了Java static方法用法,結合具體案例形式總結分析了java static方法功能、使用方法及相關操作注意事項,需要的朋友可以參考下
    2019-09-09
  • java常見的字符串操作和日期操作匯總

    java常見的字符串操作和日期操作匯總

    本文主要對java 常見的字符串操作和日期操作進行整理。具有一定的參考價值,需要的朋友一起來看下吧
    2016-12-12
  • Java動態(tài)線程池插件dynamic-tp集成過程淺析

    Java動態(tài)線程池插件dynamic-tp集成過程淺析

    這篇文章主要介紹了Java動態(tài)線程池插件dynamic-tp集成過程,dynamic-tp是一個輕量級的動態(tài)線程池插件,它是一個基于配置中心的動態(tài)線程池,線程池的參數(shù)可以通過配置中心配置進行動態(tài)的修改
    2023-03-03
  • springboot實現(xiàn)全局異常捕獲的使用示例

    springboot實現(xiàn)全局異常捕獲的使用示例

    任何系統(tǒng),我們不會傻傻的在每一個地方進行異常捕獲和處理,整個系統(tǒng)一般我們會在一個的地方統(tǒng)一進行異常處理,本文主要介紹了springboot實現(xiàn)全局異常捕獲的使用示例,感興趣的可以了解一下
    2023-11-11
  • 使用gRPC微服務的內(nèi)部通信優(yōu)化

    使用gRPC微服務的內(nèi)部通信優(yōu)化

    這篇文章主要為大家介紹了微服務優(yōu)化之使用gRPC做微服務的內(nèi)部通信,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-03-03
  • Java實現(xiàn)文件上傳和下載的方法詳解

    Java實現(xiàn)文件上傳和下載的方法詳解

    文件上傳,也稱為upload,是指將本地圖片、視頻、音頻等文件上傳到服務器上。文件下載,也稱為download,是指將文件從服務器傳輸?shù)奖镜赜嬎銠C的過程。本文將用Java實現(xiàn)文件上傳和下載,需要的可以參考一下
    2022-09-09
  • 詳解Spring Boot下Druid連接池的使用配置分析

    詳解Spring Boot下Druid連接池的使用配置分析

    本篇文章主要介紹了詳解Spring Boot下Druid連接池的使用配置分析,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Java基于對象流實現(xiàn)銀行系統(tǒng)

    Java基于對象流實現(xiàn)銀行系統(tǒng)

    這篇文章主要為大家詳細介紹了Java基于對象流實現(xiàn)銀行系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09

最新評論