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

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

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

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

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

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

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

1 添加包依賴build.gradle

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

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

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

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

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

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

/**
 * 地址.
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Address {
 /**
  * 編號.
  */
 @Id
 private String id;
 /**
  * 省.
  */
 private String province;
 /**
  * 市.
  */
 private String city;
 /**
  * 區(qū).
  */
 private String district;
 /**
  * 狀態(tài).
  */
 private Status status;
}

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

/**
 * 對外提供的地址倉儲接口,繼承所有地址相關(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);
}

個性化倉儲實現(xiàn),使用MongoTemplate對象與mongodb數(shù)據(jù)庫進行交互!

/**
 * 特殊規(guī)則的倉儲實現(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注解來訪問倉儲和業(yè)務(wù)對象即可

@RestController
public class MongoController {
 // 倉儲.
 @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的集成與使用實例詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 基于Jenkins自動打包并部署docker環(huán)境的操作過程

    基于Jenkins自動打包并部署docker環(huán)境的操作過程

    這篇文章主要介紹了基于Jenkins自動打包并部署docker環(huán)境,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • MyBatisPlus?TypeHandler自定義字段類型轉(zhuǎn)換Handler

    MyBatisPlus?TypeHandler自定義字段類型轉(zhuǎn)換Handler

    這篇文章主要為大家介紹了MyBatisPlus?TypeHandler自定義字段類型轉(zhuǎn)換Handler示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • springboot實現(xiàn)極驗校驗的項目實踐

    springboot實現(xiàn)極驗校驗的項目實踐

    在系統(tǒng)業(yè)務(wù)中,需要想客戶發(fā)送手機驗證碼,進行驗證后,才能提交,本文主要介紹了springboot實現(xiàn)極驗校驗的項目實踐,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • SpringCloud Alibaba Seata (收藏版)

    SpringCloud Alibaba Seata (收藏版)

    Seata是一款開源的分布式事務(wù)解決方案,致力于在微服務(wù)架構(gòu)在提供高性能和簡單一樣的分布式事務(wù)服務(wù)。這篇文章主要介紹了SpringCloud Alibaba Seata 的相關(guān)知識,需要的朋友可以參考下
    2020-10-10
  • Java處理異常2種機制關(guān)鍵字區(qū)別解析

    Java處理異常2種機制關(guān)鍵字區(qū)別解析

    這篇文章主要介紹了java處理異常2種機制關(guān)鍵字區(qū)別解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • hibernate-validator如何使用校驗框架

    hibernate-validator如何使用校驗框架

    高效、合理的使用hibernate-validator校驗框架可以提高程序的可讀性,以及減少不必要的代碼邏輯,本文主要介紹了hibernate-validator如何使用校驗框架,感興趣的可以了解一下
    2022-04-04
  • maven倉庫訪問順序小結(jié)

    maven倉庫訪問順序小結(jié)

    在日常操作中,相信很多人在maven倉庫的優(yōu)先級順序是什么問題上存在疑惑,本文就來介紹一下maven倉庫訪問順序,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • Java實現(xiàn)線性表的順序存儲

    Java實現(xiàn)線性表的順序存儲

    這篇文章主要為大家詳細介紹了Java實現(xiàn)線性表的順序存儲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • java通過url讀取文件內(nèi)容示例

    java通過url讀取文件內(nèi)容示例

    這篇文章主要介紹了java通過url讀取文件內(nèi)容示例,大家參考使用吧
    2014-01-01
  • Springboot啟動流程詳細分析

    Springboot啟動流程詳細分析

    這篇文章主要介紹了SpringBoot啟動過程的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-12-12

最新評論