spring-boot 整合mongo(簡單整合含源碼)

spring-boot 整合mongo

技術(shù)版本說明

1. springboot .version - 2.2.2.RELEASE
2. jdk .version - 8
3. lombok.version  - version  - 1.18.10
4. hutool-all.version - 5.6.2
5. spring-boot-starter-data-mongo.version - 延用springboot里的版本(即 2.2.2.RELEASE)

源碼地址

gitee地址: https://gitee.com/zjydzyjs/spring-boot-use-case-collection/tree/master/spring-boot-no-sql/mongo

yml配置說明

如下圖(yml配置):

yml配置

yml 配置(圖)

備注: 我這里只是簡單配置,如果需要自定義復(fù)雜配置,請自行配置;

想知道都支持那些屬性配置的?

  1. 請搜索類 {@link MongoProperties.class};
package: org.springframework.boot.autoconfigure.mongo
下的
MongoProperties.class
  1. 直接通過點擊yml配置中的mongodb下的最后一層內(nèi)容即可跳轉(zhuǎn)到具體類,例如點擊application-dev.yml 中的host 屬性;

  2. 通過找尋Mongo自動配置類來找到具體的屬性配置;

自動配置文件

右邊 MongoDataAutoConfiguration點擊進(jìn)去,即可找到

@Configuration(
    proxyBeanMethods = false
)
@ConditionalOnClass({MongoClient.class, com.mongodb.client.MongoClient.class, MongoTemplate.class})
@EnableConfigurationProperties({MongoProperties.class})
@Import({MongoDataConfiguration.class, MongoDbFactoryConfiguration.class, MongoDbFactoryDependentConfiguration.class})
@AutoConfigureAfter({MongoAutoConfiguration.class})
public class MongoDataAutoConfiguration {
    public MongoDataAutoConfiguration() {
    }
}


@EnableConfigurationProperties 可以得知Mongo配置類是MongoProperties.class

Spring-Boot兩種與Mongo 交互的方式

1.MongoTemplate

前言

spring-boot-starter-data-mongo 封裝了對象用于對mongo的操作,你可以理解為這是spring-boot幫我們寫好了一個用于操作mongo的工具類(或服務(wù)類),這個類叫 MongoTemplate.class

{@link org.springframework.data.mongodb.core.MongoTemplate}

類似于RdisTemplate 這種模板工具類

細(xì)說

額,??,該模板過于復(fù)雜,我也不會,大兄弟你懂的,所以暫時掠過這里,本文檔主要講述如何快速入門操作;

所以,真的不是我不講!!!

如何使用

我通過 MongoTemplate 簡單的封裝了一個 MongoService 以可以快速的使用MongoTemplate , 地址為 mongo模塊下的{@link com.blacktea.mongo.service.MongoTemplate}

一些簡單的增刪改查里面都有,存在問題或沒有的自己修改一下就行,歡迎提出指定建議家制。

你可以通過我封裝的方法進(jìn)行查看,相信你可以看的懂簡單的MongoTemplate 操作,復(fù)雜的操作的話,可以自己去研究,我這里也歡迎你補充尿赚。

測試的例子,我都寫在 {@link com.blacktea.mongo.MongoApplicationTests}

可以直接去玩一下犬耻。

2. MongoRepository(繼承接口)

前言

spring-boot-starter-data-mongo 封裝了對象用于對mongo的操作,你可以理解為這是spring-boot幫我們寫好了一個用于操作mongo的接口,它自己會去是實現(xiàn)該接口,無需你自己實現(xiàn),這個接口叫 MongoRepository

{@link org.springframework.data.mongodb.repository.MongoRepository}

類似于springboot幫Jpa實現(xiàn)的這種接口

細(xì)說

我沒寫分頁、保存等接口?

它怎么實現(xiàn)分頁瘟仿、保存等功能?

你可以點進(jìn)這個接口進(jìn)行查看,可以發(fā)現(xiàn)是下圖 MongoRepository源碼

MongoRepository源碼

當(dāng)前這個接口僅有7個方法,但是你在接著打開它繼承的接口,將所有繼承包含父類繼承都打開會發(fā)現(xiàn)下圖 所有方法

所有方法

所以有知道怎么有那些功能了吧,因為springboot做了封裝,你繼承那個接口,它會自動去實現(xiàn)接口,至于接口實現(xiàn)的內(nèi)容,請去這個類 {@link org.springframework.data.mongodb.repository.support.SimpleMongoRepository}

重要: 這里我沒講它是怎么掃描并交給spring管理的,因為我不會......??(流下了沒技術(shù)的淚水)阔挠。

歡迎大佬補充!

這里還有一個關(guān)鍵點 下圖的動態(tài)接口名稱是怎么生成的?

動態(tài)生成接口名稱

這個我是真不知道,下次有機會再補充吧!

也歡迎大佬留言!

如何使用

我寫了一個模板 {@link com.blacktea.mongo.dao.mongo.MongoTestRepository} 可以看看。

重點:

mongo數(shù)據(jù):

{
    "_id" : NumberLong(1002),
    "des" : "測試第一次",
    "date" : ISODate("2021-08-31T06:42:50.540Z"),
    "data" : {
        "name" : "2",
        "index" : 2
    },
    "_class" : "com.blacktea.mongo.entites.dto.MongoTestDTO"
}
當(dāng)數(shù)據(jù)出現(xiàn)嵌套層的時候,這里的查詢?nèi)缦?
List<MongoTestDTO> findByData_Name(String data_name);

當(dāng)前對象MongoTestDTO下的嵌套類 (屬性對象)

{@link com.blacktea.mongo.entites.dto.MongoTestDTO.T}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市羡亩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌周伦,老刑警劉巖夕春,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異专挪,居然都是意外死亡及志,警方通過查閱死者的電腦和手機片排,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來速侈,“玉大人率寡,你說我怎么就攤上這事∫邪幔” “怎么了冶共?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長每界。 經(jīng)常有香客問我捅僵,道長,這世上最難降的妖魔是什么眨层? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任庙楚,我火速辦了婚禮,結(jié)果婚禮上趴樱,老公的妹妹穿的比我還像新娘馒闷。我一直安慰自己,他們只是感情好叁征,可當(dāng)我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布纳账。 她就那樣靜靜地躺著,像睡著了一般捺疼。 火紅的嫁衣襯著肌膚如雪疏虫。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天帅涂,我揣著相機與錄音议薪,去河邊找鬼尤蛮。 笑死媳友,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的产捞。 我是一名探鬼主播醇锚,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼坯临!你這毒婦竟也來了焊唬?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤看靠,失蹤者是張志新(化名)和其女友劉穎赶促,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體挟炬,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡鸥滨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年嗦哆,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片婿滓。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡老速,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出凸主,到底是詐尸還是另有隱情橘券,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布卿吐,位于F島的核電站旁舰,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏嗡官。R本人自食惡果不足惜鬓梅,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望谨湘。 院中可真熱鬧绽快,春花似錦、人聲如沸紧阔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽擅耽。三九已至活孩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間乖仇,已是汗流浹背憾儒。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留乃沙,地道東北人起趾。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像警儒,于是被迫代替她去往敵國和親训裆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容