一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - Java教程 - springboot Mongodb的集成與使用實例詳解

springboot Mongodb的集成與使用實例詳解

2021-04-22 10:57張占嶺 Java教程

這篇文章主要介紹了springboot Mongodb的集成與使用實例詳解,需要的朋友可以參考下

說說springboot與大叔lind.ddd的淵源

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

在項目中實現mongodb

如果項目需要使用mongodb去持久化數據,一般可以經過下面幾個步驟來實現:

1 添加包依賴build.gradle

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

如果有單元測試項目,可以使用內嵌的mongodb,這樣它不需要與外部資源進行通信,工作原理:從遠程下載mongodb包,啟動它,測試完成后刪除生成的集合

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

2 添加默認的配置項application.yml

?
1
2
3
4
5
6
spring:
 data:
  mongodb:
   uri: mongodb://192.168.99.100:27017/test
   password: guest
   username: guest

3 添加mongodb集合對應的實體類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/**
 * 地址.
 */
@data
@noargsconstructor
@allargsconstructor
public class address {
 /**
  * 編號.
  */
 @id
 private string id;
 /**
  * 省.
  */
 private string province;
 /**
  * 市.
  */
 private string city;
 /**
  * 區.
  */
 private string district;
 /**
  * 狀態.
  */
 private status status;
}

4 添加實體所對應的倉庫類,它需要繼承extends標準的mongodb倉儲,同時mongodb倉儲支持自動定約定的方法,開發人員可以通過@query注釋來確定返回的字段列表,這對于大數據文檔是很必要的,如果默認的接口不能滿足我們的要求,我們需要定義個性化的接口,并去實現它,下面的例子中,我們的addressextrepository就是一個個性化接口,我們對外的接口addressrepository 需要繼承它,注意,大叔認為這樣破獲了面向對象的開閉原則,元芳,你怎么看!

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/**
 * 對外提供的地址倉儲接口,繼承所有地址相關的接口.
 */
public interface addressrepository extends
  addressextrepository,
  mongorepository<address, string> {
 /**
  * 根據省,拿地址列表.
  *
  * @param province
  * @return
  */
 @query(fields = "{'province': 0}")
 list<address> findaddressesbyprovince(string province);
 /**
  * 根據省和省,拿地址列表.
  *
  * @param province
  * @param city
  * @return
  */
 @query()//fields表示包含的字段
 list<address> findaddressesbyprovinceandcityanddistrict(string province, string city, string district);
}

個性化倉儲實現,使用mongotemplate對象與mongodb數據庫進行交互!

?
1
2
3
4
5
6
7
8
9
10
11
12
/**
 * 特殊規則的倉儲實現.
 */
public class addressextrepositoryimpl implements addressextrepository {
 @autowired
 mongotemplate mongotemplate;
 @override
 public address findbyprovinceandcity(string province, string city) {
  query query = new query(criteria.where("province").is(province).and("city").is(city));
  return mongotemplate.findone(query, address.class, "address");
 }
}

5 controller中直接通過@autowired注解來訪問倉儲和業務對象即可

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@restcontroller
public class mongocontroller {
 // 倉儲.
 @autowired
 private addressrepository repository;
 // 用戶業務.
 @autowired
 private userservice userservice;
 /**
  * 得到地址列表.
  *
  * @return
  */
 @requestmapping("/address/{province}")
 public address getaddress(@pathvariable("province") string province) {
  system.out.println("1,province=" + province);
  return userservice.getaddress(province);
 }
}

總結

以上所述是小編給大家介紹的springboot mongodb的集成與使用實例詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:https://www.cnblogs.com/lori/archive/2018/04/18/8875701.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: chinesespank调教 | 激情视频激情小说 | 女医学护士一级毛片 | 国产福利微拍精品一区二区 | 精品欧美一区二区三区久久久 | 色屁屁www | 日日骑夜夜骑 | aa视频免费 | 亚洲第一福利网 | 俄罗斯引擎首页进入 | 国产最强大片免费视频 | 日韩毛片免费线上观看 | 亚洲高清视频免费 | 亚洲区精品久久一区二区三区 | 动漫人物差差插曲漫画 | 免费理伦片高清在线 | 亚洲AV人无码综合在线观看蜜桃 | 暖暖影院日本版 | 国产一区风间由美在线观看 | 天天做天天爱天天爽综合区 | 美女18隐私羞羞视频网站 | 久久黄色免费 | 国产成人性毛片aaww | 四虎国产精品免费入口 | 青草视频网站在线观看 | 娇小异类videos | 国内偷拍第一页 | 亚洲网站在线观看 | 亚欧成人中文字幕一区 | 国产精品午夜国产小视频 | 亚洲第一色区 | 小寡妇好紧进去了好大看视频 | 五月天国产精品 | 嫩草影院永久入口在线观看 | s8sp加密路线和免费路线首页 | chaopeng在线观看 | 亚洲欧美日韩精品 | 好大好硬好深好爽想要吃奶 | 美女张开腿让我了一夜 | 亚洲天堂色图 | 青柠影院在线观看免费完整版1 |