国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

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

2024-07-14 08:40:19
字體:
來源:轉載
供稿:網友

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

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

在項目中實現mongodb

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

1 添加包依賴build.gradle

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

如果有單元測試項目,可以使用內嵌的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集合對應的實體類

/** * 地址. */@Data@NoArgsConstructor@AllArgsConstructorpublic 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 需要繼承它,注意,大叔認為這樣破獲了面向對象的開閉原則,元芳,你怎么看!

/** * 對外提供的地址倉儲接口,繼承所有地址相關的接口. */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數據庫進行交互!

/** * 特殊規則的倉儲實現. */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注解來訪問倉儲和業務對象即可

@RestControllerpublic 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的集成與使用實例詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永州市| 夏邑县| 徐州市| 当涂县| 厦门市| 德阳市| 太白县| 枞阳县| 莎车县| 新宾| 吉水县| 措勤县| 沽源县| 宜章县| 金塔县| 新和县| 股票| 渭源县| 新邵县| 井冈山市| 锦州市| 沿河| 蒲城县| 将乐县| 长武县| 东至县| 通化县| 青河县| 镇江市| 桃江县| 青铜峡市| 漳平市| 双城市| 宁南县| 合作市| 隆化县| 永春县| 满洲里市| 鞍山市| 海丰县| 屏东市|