springboot Mongodb的整合與使用

2021-09-07 17:55:29 字數 1885 閱讀 2607

mongodb在lind.ddd中被二次封裝過(大叔的.net和.net core),將它當成是一種倉儲來使用,對於開發人員來說只公開curd幾個標準的介面即可,而在springboot框架裡,它與大叔lind有些類似之處,同樣是被二次封裝了,開發人員只需要關注自己的業務即可,而標準的curd操作完成由springboot幫助我們來實現,一般地,我們會設計乙個與實體物件的介面倉儲,讓它去繼承mongo的標準介面,然後在springboot的依賴注入框架裡把標準的實現注入進來,這一切都是框架幫助我們實現的!

如果專案需要使用mongodb去持久化資料,一般可以經過下面幾個步驟來實現:

1 新增包依賴build.gradle

compile('org.springframework.boot:spring-boot-starter-data-mongodb')

testcompile('de.flapdoodle.embed:de.flapdoodle.embed.mongo:2.0.3')

spring:

data:

mongodb:

uri: mongodb:

password: guest

username: guest

3 新增mongodb集合對應的實體類

/**

* 位址. */

@data

@noargsconstructor

@allargsconstructor

public

class

address

4 新增實體所對應的倉庫類,它需要繼承extends標準的mongodb倉儲,同時mongodb倉儲支援自動定約定的方法,開發人員可以通過@query注釋來確定返回的字段列表,這對於大資料文件是很必要的,如果預設的介面不能滿足我們的要求,我們需要定義個性

化的介面,並去實現它,下面的例子中,我們的addres***trepository就是乙個個性化介面,我們對外的介面addressrepository 需要繼承它,注意,大叔認為這樣破獲了物件導向的開閉原則,元芳,你怎麼看!

/** */

public

inte***ce addressrepository extends

addres***trepository,

mongorepository

") list

findaddressesbyprovince(string province);

/*** 根據省和省,拿位址列表.**

@param

province

* @param

city

* @return

*/@query()

//fields表示包含的字段

listfindaddressesbyprovinceandcityanddistrict(string province, string city, string district);

}

個性化倉儲實現,使用mongotemplate物件與mongodb資料庫進行互動!

/**

* 特殊規則的倉儲實現. */

public

class addres***trepositoryimpl implements

addres***trepository

}

5 controller中直接通過@autowired註解來訪問倉儲和業務物件即可

@restcontroller

public

class

mongocontroller

}

感謝各位的閱讀!

對知識的探索我們還在繼續!

Android AutoLayout整合使用

由於android螢幕尺寸眾多的情況,android適配一直是個問題,谷歌推出了百分比布局,本人有使用,但是百分比布局在部分時候適配並不是那麼完美,偶然機會看到鴻洋大神推出的autolayout,在公司也開始廣泛使用,本人也由百分比布局轉為autolayout,大神寫的帖子太深奧,使用時候本菜鳥覺得...

java EasyExcel整合及工具類使用

com.alibaba easyexcel 1.1.2 beta5 實體類繼承baserowmodel 對需要匯出或者匯入的字段增加 excelproperty註解,index值為對應excel中的列,value為表頭,format為日期格式化 public class persondto exte...

java EasyExcel整合及工具類使用

com.alibaba easyexcel 1.1.2 beta5 實體類繼承baserowmodel 對需要匯出或者匯入的字段增加 excelproperty註解,index值為對應excel中的列,value為表頭,format為日期格式化 public class persondto exte...