欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2018年04月18日 16:42:08   作者:張占嶺  
這篇文章主要介紹了springboot Mongodb的集成與使用實(shí)例詳解,需要的朋友可以參考下

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

Mongodb在Lind.DDD中被二次封裝過(大叔的.net和.net core),將它當(dāng)成是一種倉(cāng)儲(chǔ)來使用,對(duì)于開發(fā)人員來說只公開curd幾個(gè)標(biāo)準(zhǔn)的接口即可,而在springboot框架里,它與大叔lind有些類似之處,同樣是被二次封裝了,開發(fā)人員只需要關(guān)注自己的業(yè)務(wù)即可,而標(biāo)準(zhǔn)的curd操作完成由springboot幫助我們來實(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)來,這一切都是框架幫助我們實(shí)現(xiàn)的!

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

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

1 添加包依賴build.gradle

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

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

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

2 添加默認(rèn)的配置項(xiàng)application.yml

spring:
 data:
  mongodb:
   uri: mongodb://192.168.99.100:27017/Test
   password: guest
   username: guest

3 添加mongodb集合對(duì)應(yīng)的實(shí)體類

/**
 * 地址.
 */
@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)定約定的方法,開發(fā)人員可以通過@Query注釋來確定返回的字段列表,這對(duì)于大數(shù)據(jù)文檔是很必要的,如果默認(rèn)的接口不能滿足我們的要求,我們需要定義個(gè)性化的接口,并去實(shí)現(xiàn)它,下面的例子中,我們的AddressExtRepository就是一個(gè)個(gè)性化接口,我們對(duì)外的接口AddressRepository 需要繼承它,注意,大叔認(rèn)為這樣破獲了面向?qū)ο蟮拈_閉原則,元芳,你怎么看!

/**
 * 對(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)行交互!

/**
 * 特殊規(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中直接通過@Autowired注解來訪問倉(cāng)儲(chǔ)和業(yè)務(wù)對(duì)象即可

@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ì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Maven插件構(gòu)建Docker鏡像的實(shí)現(xiàn)步驟

    Maven插件構(gòu)建Docker鏡像的實(shí)現(xiàn)步驟

    這篇文章主要介紹了Maven插件構(gòu)建Docker鏡像的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Java集成swagger文檔組件

    Java集成swagger文檔組件

    這篇文章主要介紹了Java集成swagger文檔組件,通過詳細(xì)的圖文介紹和代碼分析展示,從頭展開說明詳細(xì)的過程,希望對(duì)你的開發(fā)有所幫助
    2021-06-06
  • Java并發(fā)編程之原子操作類詳情

    Java并發(fā)編程之原子操作類詳情

    這篇文章主要介紹了Java并發(fā)編程之原子操作類詳情,文章基于Java并發(fā)編程展開相關(guān)內(nèi)容,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-04-04
  • Java使用@Validated注解進(jìn)行參數(shù)驗(yàn)證的方法

    Java使用@Validated注解進(jìn)行參數(shù)驗(yàn)證的方法

    這篇文章主要介紹了Java使用@Validated注解進(jìn)行參數(shù)驗(yàn)證的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Java多線程編程小實(shí)例模擬停車場(chǎng)系統(tǒng)

    Java多線程編程小實(shí)例模擬停車場(chǎng)系統(tǒng)

    這是一個(gè)關(guān)于Java多線程編程的例子,用多線程的思想模擬停車場(chǎng)管理系統(tǒng),這里分享給大家,供需要的朋友參考。
    2017-10-10
  • IDEA中啟動(dòng)多個(gè)SpringBoot服務(wù)的實(shí)現(xiàn)示例

    IDEA中啟動(dòng)多個(gè)SpringBoot服務(wù)的實(shí)現(xiàn)示例

    本文主要介紹了IDEA中啟動(dòng)多個(gè)SpringBoot服務(wù)的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • Java權(quán)重隨機(jī)的實(shí)現(xiàn)方法

    Java權(quán)重隨機(jī)的實(shí)現(xiàn)方法

    這篇文章主要介紹了Java權(quán)重隨機(jī)的實(shí)現(xiàn)方法,實(shí)例分析了權(quán)重隨機(jī)算法的原理與完整實(shí)現(xiàn)方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-01-01
  • 解決SpringMVC使用@RequestBody注解報(bào)400錯(cuò)誤的問題

    解決SpringMVC使用@RequestBody注解報(bào)400錯(cuò)誤的問題

    這篇文章主要介紹了解決SpringMVC使用@RequestBody注解報(bào)400錯(cuò)誤的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Springboot項(xiàng)目與vue項(xiàng)目整合打包的實(shí)現(xiàn)方式

    Springboot項(xiàng)目與vue項(xiàng)目整合打包的實(shí)現(xiàn)方式

    這篇文章主要介紹了Springboot項(xiàng)目與vue項(xiàng)目整合打包的實(shí)現(xiàn)方式,本文通過兩種方式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-07-07
  • CentOS7和8中安裝Maven3.8.4的簡(jiǎn)單步驟

    CentOS7和8中安裝Maven3.8.4的簡(jiǎn)單步驟

    maven是屬于apache的一個(gè)工具,主要是對(duì)java進(jìn)行編譯打包,解決依賴關(guān)系,下面這篇文章主要給大家介紹了關(guān)于CentOS7和8中安裝Maven3.8.4的相關(guān)資料,需要的朋友可以參考下
    2022-04-04

最新評(píng)論