dubbo的整個調用過程,core 實例化接口_實例講解Springboot整合MongoDB進行CRUD操作的兩種方式

 2023-10-20 阅读 30 评论 0

摘要:1 簡介Springboot是最簡單的使用Spring的方式,而MongoDB是最流行的NoSQL數據庫。兩者在分布式、微服務架構中使用率極高,本文將用實例介紹如何在Springboot中整合MongoDB的兩種方法:MongoRepository和MongoTemplate。代碼結構如下:2 項目準備2.1

1 簡介

Springboot是最簡單的使用Spring的方式,而MongoDB是最流行的NoSQL數據庫。兩者在分布式、微服務架構中使用率極高,本文將用實例介紹如何在Springboot中整合MongoDB的兩種方法:MongoRepositoryMongoTemplate

代碼結構如下:

d6941bb00b5651730831805cca4d0e8c.png

2 項目準備

2.1 啟動MongoDB實例

dubbo的整個調用過程?為了方便,使用Docker來啟動MongoDB,詳細指導文檔請參考:用Docker安裝一個MongoDB最新版玩玩 ,這里不再贅述。

2.2 引入相關依賴

主要的依賴為WebMongoDBstarter,把下面代碼加入到pom.xml中即可:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>

2.3 配置數據庫連接信息

與配置MySQLOracle一樣,MongoDB也需要配置連接信息,配置在application.properties中如下:

server.port=8080spring.data.mongodb.authentication-database=admin
spring.data.mongodb.database=testdb
spring.data.mongodb.username=user
spring.data.mongodb.password=123456
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017

2.4 創建數據模型實體

創建User類如下:

package com.pkslow.mongo.model;import org.springframework.data.annotation.Id;
import java.util.Date;public class User {@Idprivate String userId;private String name;private Integer age;private Date createTime = new Date();public String getUserId() {return userId;}public void setUserId(String userId) {this.userId = userId;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public Date getCreateTime() {return createTime;}public void setCreateTime(Date createTime) {this.createTime = createTime;}
}

dubbo接口調用、不需要在MongoDB中創建對應的Collections(表),當通過Web應用新增時會自動創建。

3 方式1:MongoRepository

3.1 定義數據訪問層UserRepository

使用過Spring Jpa的都清楚,Repository實際就是用于操作數據庫的類。在非關系型數據庫MongoDB的整合中,也是一樣的。Spring會幫我們實現好對應接口的方法,開發人員連SQL都不用寫,非常省心。代碼如下:

package com.pkslow.mongo.dal;import com.pkslow.mongo.model.User;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;@Repository
public interface UserRepository extends MongoRepository<User, String> {
}

注意MongoRepository后面接的泛型<User, String>第一個為實體類,第二個為主鍵ID

3.2 實現Controller

Controller比較基礎,就不講解了,常用的注解是必須要掌握的,直接上代碼吧:

package com.pkslow.mongo.contrlloer;import com.pkslow.mongo.dal.UserRepository;
import com.pkslow.mongo.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import java.util.List;@RestController
@RequestMapping("/user")
public class UserController {@Autowiredprivate final UserRepository userRepository;public UserController(UserRepository userRepository) {this.userRepository = userRepository;}@GetMapping("")public List<User> getAllUsers() {return userRepository.findAll();}@GetMapping("/{userId}")public User getByUserId(@PathVariable String userId) {return userRepository.findById(userId).orElse(new User());}@PostMapping("")public User addNewUser(@RequestBody User user) {return userRepository.save(user);}@DeleteMapping("/{userId}")public String delete(@PathVariable String userId) {User user = new User();user.setUserId(userId);userRepository.deleteById(userId);return "deleted: " + userId;}@PutMapping("")public User update(@RequestBody User user) {return userRepository.save(user);}
}

java連接mongodb數據庫、注意代碼沒有做異常情況的判斷和處理,這里為了快速演示,就先不管了。

3.3 測試

Postman測試后,每個接口均調用成功。就不一一截圖了。

648e52d6031ca394e72b28180954cf9d.png

4 方式2:MongoTemplate

4.1 定義數據訪問層UserDAL

先定義接口為:

package com.pkslow.mongo.dal;import com.pkslow.mongo.model.User;
import java.util.List;public interface UserDAL {List<User> findAll();User findById(String userId);User save(User user);void deleteById(String userId);
}

Springboot框架、然后實現該接口如下:

package com.pkslow.mongo.dal;import com.pkslow.mongo.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Repository;
import java.util.List;@Repository
public class UserDALImpl implements UserDAL {@Autowiredprivate MongoTemplate template;@Overridepublic List<User> findAll() {return template.findAll(User.class);}@Overridepublic User findById(String userId) {return template.findById(userId,User.class);}@Overridepublic User save(User user) {return template.save(user);}@Overridepublic void deleteById(String userId) {Query query = new Query();query.addCriteria(Criteria.where("userId").is(userId));template.remove(query, User.class);}
}

4.2 實現另一個Controller

這個Controller的代碼與之前的基本一樣,只是數據訪問類不一樣,代碼如下:

package com.pkslow.mongo.contrlloer;import com.pkslow.mongo.dal.UserDAL;
import com.pkslow.mongo.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import java.util.List;@RestController
@RequestMapping("/userTemplate")
public class UserTemplateController {@Autowiredprivate final UserDAL userDAL;public UserTemplateController(UserDAL userDAL) {this.userDAL = userDAL;}@GetMapping("")public List<User> getAllUsers() {return userDAL.findAll();}@GetMapping("/{userId}")public User getByUserId(@PathVariable String userId) {return userDAL.findById(userId);}@PostMapping("")public User addNewUser(@RequestBody User user) {return userDAL.save(user);}@DeleteMapping("/{userId}")public String delete(@PathVariable String userId) {User user = new User();user.setUserId(userId);userDAL.deleteById(userId);return "deleted: " + userId;}@PutMapping("")public User update(@RequestBody User user) {return userDAL.save(user);}
}

4.3 測試

測試一樣也是全部通過:

b48b8974f19d3b568bea42758195c079.png

5 總結

java調用dubbo接口?本文通過實例講解了如何整合SpringbootMongoDB,主要有兩種方法:MongoRepositoryMongoTemplate。代碼基本在文章中已經貼出來了,如果還不清楚,可以在南瓜慢說公眾號回復<SpringbootMongoDB>獲取代碼。


歡迎訪問南瓜慢說 www.pkslow.com 獲取更多精彩文章!

歡迎關注微信公眾號<南瓜慢說>,將持續為你更新...

92b88b545654f7c7c4388035010dddf6.png

dubbo調用流程、多讀書,多分享;多寫作,多整理。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/151033.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息