最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot整合MongoDB流程詳解

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

1. MongoDB簡介

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

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

MongoDB最大的特點(diǎn)是它支持的查詢語言非常強(qiáng)大,并且還支持對數(shù)據(jù)建立索引。總體來說,MongoDB是一款應(yīng)用相當(dāng)廣泛的NoSQL數(shù)據(jù)庫。

2. MongoDB安裝

我用的是寶塔面板進(jìn)行安裝的,安裝目錄是/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行配置表示以守護(hù)程序的方式啟動MongoDB,即允許MongoDB在后臺運(yùn)行。

3. MongoDB的啟動和關(guān)閉

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

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

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

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

.mongo
db.version()

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

use admin;
db.shutdownServer();
exit

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

4. 安全管理

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

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

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

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

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

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

如果db.auth(“suohechuan”,“123@456”)命令執(zhí)行結(jié)果為1,就表示認(rèn)證成功,可以執(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行配置表示驗(yàn)證登錄信息的庫。
  • 第2行配置表示要連接的庫,認(rèn)證信息不一定要在連接的庫中創(chuàng)建,因此這兩個分開配置。
  • 第3~6行配置表示MongoDB的連接地址和認(rèn)證信息等

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

創(chuàng)建實(shí)體類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)預(yù)定義了針對實(shí)體類的查詢、添加、刪除等操作。BookDao 中可以按照J(rèn)PA方法命名規(guī)則定義查詢方法。

5. 創(chuàng)建 Controller

簡單起見,直接將BookDao注入 Controller進(jìn)行測試:

@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相關(guān)的依賴,而開發(fā)者并沒有提供MongoTemplate,則默認(rèn)會有一個MongoTemplate 注冊到Spring 容器中,相關(guān)配置源碼在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=錢鐘書)

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

相關(guān)文章

  • MyBatis Plus中執(zhí)行原生SQL語句方法常見方案

    MyBatis Plus中執(zhí)行原生SQL語句方法常見方案

    MyBatisPlus提供了多種執(zhí)行原生SQL語句的方法,包括使用SqlRunner工具類、@Select注解和XML映射文件,每種方法都有其適用場景和優(yōu)缺點(diǎn),本文給大家介紹MyBatis Plus中執(zhí)行原生SQL語句方法常見方案,感興趣的朋友一起看看吧
    2025-11-11
  • springboot獲取微信JSDK簽名信息的實(shí)現(xiàn)示例

    springboot獲取微信JSDK簽名信息的實(shí)現(xiàn)示例

    本文介紹了如何在Spring Boot應(yīng)用中獲取微信JSDK的簽名信息,包括獲取接口URL、參數(shù)設(shè)置、簽名算法和獲取簽名結(jié)果的步驟,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • Java中的concurrenthashmap集合詳細(xì)剖析

    Java中的concurrenthashmap集合詳細(xì)剖析

    這篇文章主要介紹了Java中的concurrenthashmap集合詳細(xì)剖析,有參構(gòu)造后第一次put時會進(jìn)行初始化,由源碼可知,會先判斷所傳入的容量是否>=最大容量的一半,如果滿足條件,就會將容量修改為最大值,反之則會將容量改為所傳入數(shù)*1.5+1,需要的朋友可以參考下
    2023-11-11
  • java實(shí)現(xiàn)圖書管理系統(tǒng)

    java實(shí)現(xiàn)圖書管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)圖書管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • Java堆外內(nèi)存及調(diào)優(yōu)方式

    Java堆外內(nèi)存及調(diào)優(yōu)方式

    直接內(nèi)存并不是Java虛擬機(jī)規(guī)范中定義的內(nèi)存區(qū)域,但使用廣泛,它能顯著提高IO性能,避免內(nèi)存復(fù)制,然而,它也需要小心管理,以避免內(nèi)存泄漏和溢出,通過設(shè)置參數(shù)和使用NMT特性,可以更好地管理和診斷直接內(nèi)存
    2026-04-04
  • java數(shù)組復(fù)制的四種方法效率對比

    java數(shù)組復(fù)制的四種方法效率對比

    這篇文章主要介紹了java數(shù)組復(fù)制的四種方法效率對比,文中有簡單的代碼示例,以及效率的比較結(jié)果,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • Spark隨機(jī)森林實(shí)現(xiàn)票房預(yù)測

    Spark隨機(jī)森林實(shí)現(xiàn)票房預(yù)測

    這篇文章主要為大家詳細(xì)介紹了Spark隨機(jī)森林實(shí)現(xiàn)票房預(yù)測,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • JAVA導(dǎo)出EXCEL表格的實(shí)例教學(xué)

    JAVA導(dǎo)出EXCEL表格的實(shí)例教學(xué)

    在本文中我們給大家整理了關(guān)于JAVA導(dǎo)出EXCEL表格的實(shí)例教學(xué)以及相關(guān)知識點(diǎn),需要的朋友們學(xué)習(xí)下。
    2019-02-02
  • Spring?Boot項目中遇到`if-else`語句七種具體使用方法解析

    Spring?Boot項目中遇到`if-else`語句七種具體使用方法解析

    當(dāng)在Spring?Boot項目中遇到大量if-else語句時,優(yōu)化這些代碼變得尤為重要,因?yàn)樗鼈儾粌H增加了維護(hù)難度,還可能影響應(yīng)用程序的可讀性和性能,以下是七種具體的方法,用于在Spring?Boot項目中優(yōu)化和重構(gòu)if-else語句,感興趣的朋友一起看看吧
    2024-07-07
  • SpringSecurity從數(shù)據(jù)庫中獲取用戶信息進(jìn)行驗(yàn)證的案例詳解

    SpringSecurity從數(shù)據(jù)庫中獲取用戶信息進(jìn)行驗(yàn)證的案例詳解

    這篇文章主要介紹了SpringSecurity從數(shù)據(jù)庫中獲取用戶信息進(jìn)行驗(yàn)證的案例詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01

最新評論

迁西县| 山阳县| 阿拉善右旗| 长宁县| 翼城县| 台山市| 东阳市| 孝义市| 澄城县| 吉安县| 同德县| 清远市| 泗阳县| 惠安县| 阳曲县| 谷城县| 清河县| 沁水县| 巴彦淖尔市| 长武县| 民勤县| 绥芬河市| 无棣县| 乌拉特前旗| 成武县| 确山县| 班戈县| 吉林市| 安乡县| 巴中市| 象州县| 淳化县| 田阳县| 墨脱县| 广东省| 新郑市| 黄石市| 庆云县| 克什克腾旗| 汾阳市| 鲁甸县|