當前位置:編程學習大全網 - 源碼下載 - SpringBoot整合MongoDB實戰

SpringBoot整合MongoDB實戰

MongoTemplate配置

壹般情況下,按照如下配置,springboot會進行自動裝配,但是如果需要實現壹些自定義的功能,例如密碼加解密,類型轉換等功能需要手寫配置MongoTemplate。

@EnableMongoRepositories()表示支持Spring JPA,即通過規範命名的接口來實現簡單的DB操作,不需要自己寫Query,可以通過該註解的value屬性來指定註解的作用範圍。

ReUtil是壹個正則表達式的工具類,用於判斷配置文件的格式是否正確,配置MongoDatabaseFactory過程中實現壹個比較簡單的配置文件解密的過程,解密方法用簡單的字符串翻轉來實現。

通過MappingMongoConverter來實現java中的對象與MongoDB中的Document進行壹些復雜的映射,默認情況下壹個java域對象存入MongoDB時會生成壹個"_class"的key對應存儲Java對象類型,通過

來取消每條記錄生成壹個"-class"的數據。

通過MappingMongoConverter實現壹個簡單的時間轉化功能TimestampConverter,如下所示

還可以進行更加精細化的配置,例如

可以通過WritingConverter和ReadingConverter配置Document和Java對象相互轉化。

MongoTemplate實戰

例如壹個博客系統,我們通過MongoDB存儲用戶的瀏覽記錄,瀏覽記錄的實體如下所示,

如上所示,每個人對應每篇文章有壹條瀏覽記錄,每次訪問都會對訪問次數viewCount進行+1操作.下文針對這個場景介紹MongoTemplate的基本操作。

這些操作用法基本壹樣,如下所示,傳入壹個封裝查詢條件的對象Query,Java中映射的對象entityClass和MongoDB中對應的Document的名稱。

例如我們想要查詢某個用戶某篇博客的訪問次數,我們只需要通過博客id和訪問者構建查詢條件進行查詢即可。

findAndModify表示更新符合查詢條件的記錄,其方法如下所示,

Query封裝查詢條件,Update封裝的是更新內容。例如用戶每次刷新頁面瀏覽次數會+1操作,我們可以使用findAndModify操作,如下所示

如上所示,首先判斷用戶是否存在訪問記錄,如果存在則通過Update對訪問次數viewCount進行+1操作,若不存在訪問記錄則新建訪問記錄。

保存操作包括主要包括insert和save方法,這兩個方法都沒有返回值,同時兩個方法有壹些區別,

該方法如下所示,

註釋說明該方法的功能是,如果存在與查詢條件匹配的文檔,則根據Update中的內容進行更新,如果不存在符合查詢條件的內容,則根據查詢條件和Update插入新的文檔。

聚合查詢 MongoDB 中聚合(aggregate)主要用於處理數據(諸如統計平均值,求和等),並返回計算後的數據結果。本文側重於Java實現。

結合上述中的訪問記錄的場景,如果我們需要統計某個博主某個專欄下面所有文章的訪問記錄,包括訪問總人數,訪問總次數,以及每個訪客對應的訪問次數詳情,並且要滿足分頁需求,那麽我們需要用到MongoDB的聚合操作,具體實現如下所示

總結

本文詳細介紹了SpringBoot如何整合MongoDB,並且結合博客系統的訪問記錄展示了MongoTemplate的基本用法。

  • 上一篇:如何利用ROS MoveIt快速搭建機器人運動規劃平臺
  • 下一篇:excel快速生成文件目錄索引
  • copyright 2024編程學習大全網