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

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|JavaScript|易語(yǔ)言|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - springboot Mongodb的集成與使用實(shí)例詳解

springboot Mongodb的集成與使用實(shí)例詳解

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

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

說(shuō)說(shuō)springboot與大叔lind.ddd的淵源

mongodb在lind.ddd中被二次封裝過(guò)(大叔的.net和.net core),將它當(dāng)成是一種倉(cāng)儲(chǔ)來(lái)使用,對(duì)于開(kāi)發(fā)人員來(lái)說(shuō)只公開(kāi)curd幾個(gè)標(biāo)準(zhǔn)的接口即可,而在springboot框架里,它與大叔lind有些類似之處,同樣是被二次封裝了,開(kāi)發(fā)人員只需要關(guān)注自己的業(yè)務(wù)即可,而標(biāo)準(zhǔn)的curd操作完成由springboot幫助我們來(lái)實(shí)現(xiàn),一般地,我們會(huì)設(shè)計(jì)一個(gè)與實(shí)體對(duì)象的接口倉(cāng)儲(chǔ),讓它去繼承mongo的標(biāo)準(zhǔn)接口,然后在springboot的依賴注入框架里把標(biāo)準(zhǔn)的實(shí)現(xiàn)注入進(jìn)來(lái),這一切都是框架幫助我們實(shí)現(xiàn)的!

在項(xiàng)目中實(shí)現(xiàn)mongodb

如果項(xiàng)目需要使用mongodb去持久化數(shù)據(jù),一般可以經(jīng)過(guò)下面幾個(gè)步驟來(lái)實(shí)現(xiàn):

1 添加包依賴build.gradle

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

如果有單元測(cè)試項(xiàng)目,可以使用內(nèi)嵌的mongodb,這樣它不需要與外部資源進(jìn)行通信,工作原理:從遠(yuǎn)程下載mongodb包,啟動(dòng)它,測(cè)試完成后刪除生成的集合

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

2 添加默認(rèn)的配置項(xiàng)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集合對(duì)應(yīng)的實(shí)體類

?
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 {
 /**
  * 編號(hào).
  */
 @id
 private string id;
 /**
  * 省.
  */
 private string province;
 /**
  * 市.
  */
 private string city;
 /**
  * 區(qū).
  */
 private string district;
 /**
  * 狀態(tài).
  */
 private status status;
}

4 添加實(shí)體所對(duì)應(yīng)的倉(cāng)庫(kù)類,它需要繼承extends標(biāo)準(zhǔn)的mongodb倉(cāng)儲(chǔ),同時(shí)mongodb倉(cāng)儲(chǔ)支持自動(dòng)定約定的方法,開(kāi)發(fā)人員可以通過(guò)@query注釋來(lái)確定返回的字段列表,這對(duì)于大數(shù)據(jù)文檔是很必要的,如果默認(rèn)的接口不能滿足我們的要求,我們需要定義個(gè)性化的接口,并去實(shí)現(xiàn)它,下面的例子中,我們的addressextrepository就是一個(gè)個(gè)性化接口,我們對(duì)外的接口addressrepository 需要繼承它,注意,大叔認(rèn)為這樣破獲了面向?qū)ο蟮拈_(kāi)閉原則,元芳,你怎么看!

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

個(gè)性化倉(cāng)儲(chǔ)實(shí)現(xiàn),使用mongotemplate對(duì)象與mongodb數(shù)據(jù)庫(kù)進(jìn)行交互!

?
1
2
3
4
5
6
7
8
9
10
11
12
/**
 * 特殊規(guī)則的倉(cāng)儲(chǔ)實(shí)現(xiàn).
 */
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中直接通過(guò)@autowired注解來(lái)訪問(wèn)倉(cāng)儲(chǔ)和業(yè)務(wù)對(duì)象即可

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@restcontroller
public class mongocontroller {
 // 倉(cāng)儲(chǔ).
 @autowired
 private addressrepository repository;
 // 用戶業(yè)務(wù).
 @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);
 }
}

總結(jié)

以上所述是小編給大家介紹的springboot mongodb的集成與使用實(shí)例詳解,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)服務(wù)器之家網(wǎng)站的支持!

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 59日本人xxxxxxxxx69 | 色一情一乱一伦 | 亚洲国产精品一区二区三区久久 | 日本在线精品视频 | 草久社区| 青青青手机视频 | chinese帅男gay野外性 | 国产精品久久久精品日日 | 亚洲精品国产在线网站 | 国产一区二区三区四卡 | 九草视频在线 | 2019国产精品| 欧美另类性xxoo | 四虎网站入口 | 日韩视频免费一区二区三区 | 亚洲精品国产精麻豆久久99 | 四虎影视在线看免费 720p | 亚洲视频在线观看免费视频 | 欧美综合一区二区三区 | 国产不卡视频 | 午夜亚洲一区二区福利 | 日韩在线观看一区二区不卡视频 | 亚欧美色 | 日韩毛片高清在线看 | 天天做天天爰夜夜爽 | 日韩毛片基地一区二区三区 | 色屁屁二区 | 女人麻豆国产香蕉久久精品 | 久久机热免费视频 | 日本aa大片在线播放免费看 | 91在线免费看 | 高清毛片aaaaaaaaa片 | 亚洲电影第1页 | 全日爱韩国视频在线观看 | caoporm碰最新免费公开视频 | 青苹果乐园影院在线播放 | 男女激情网 | 色小孩导航 | 欧美日韩国产在线一区 | 和岳m的小说 | 日本老熟老太hd |