<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
MongoDB 是一個基於分散式檔案儲存的資料庫。由 C++ 語言編寫,旨在為 WEB 應用提供可延伸的高效能資料儲存解決方案。
MongoDB 是一個介於關聯式資料庫和非關聯式資料庫之間的產品,是非關聯式資料庫當中功能最豐富,最像關聯式資料庫的。
mongodb的安裝支援windows和linux等平臺,具體在不同平臺的下載安裝請檢視相關大佬博文。
此處通過idea工具建立,springboot選擇2.7.0版本,具體不再描述。
Spring Data MongDB 是Spring Data的下的一個模組,在springboot中整合mongodb就需要新增Spring Data MongDB的依賴,新增Spring Data MongDB依賴的方式有兩種:
建立springboot專案時勾選Spring Data MongoDB
在pom.xml檔案中新增Spring Data MongoDB依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency>
spring:
data:
mongodb:
uri: mongodb://127.0.0.1:27017/mongodb_test
或
spring:
data:
mongodb:
host: 127.0.0.1 #指定MongoDB服務地址
port: 27017 #指定埠,預設就為27017
database: mongodb #指定使用的資料庫(集合)
authentication-database: admin # 登入認證的邏輯庫名
username: admin #使用者名稱
password: abc123456 #密碼
mongodb資料庫與mysql不一樣 mysql 一個普通使用者可以管理多個資料庫,但是mongo每一個庫都有一個獨立的管理使用者,連線時需要輸入對應使用者密碼。
@Data @Document(collection = "article") //指定要對應的檔名(表名) @Accessors(chain = true) //鏈式存取 public class Article { /** * 文章主鍵 */ @Id private String id; /** * 文章名 */ private String name; /** * 文章內容 */ private String content; }
@Data @Document(collection = "book") public class Book { @Id private String id; private String name; private String type; private String description; }
其中註解含義如下:
持久層繼承MongoRepository
public interface ArticleRepository extends MongoRepository<Article,String> { /** * 根據id查詢文章 * @param id * @return */ List<Article> findByid(String id); }
注意,介面需要起名findBy + 主鍵名,否則會報找不到屬性的錯誤。
業務層
@Service @RequiredArgsConstructor public class ArticleService { private final ArticleRepository articleRepository; /** * 新增文章 * * @param article * @return */ public int create(Article article) { Article save = articleRepository.save(article); return 1; } /** * 刪除文章 * * @param ids */ public int delete(List<String> ids) { List<Article> deleteList = new ArrayList<>(); for(String id:ids){ Article article = new Article(); article.setId(id); deleteList.add(article); } articleRepository.deleteAll(deleteList); return ids.size(); } /** * 查詢文章 * @param id * @return */ public List<Article> get(String id) { return articleRepository.findByid(id); } }
控制層
@RestController @RequestMapping("/article") @RequiredArgsConstructor public class ArticleController { private final ArticleService articleService; @PostMapping("/create") public String create(@RequestBody Article article) { int result = articleService.create(article); if (result > 0) { return "文章建立成功"; } else { return "文章建立失敗"; } } @PostMapping("/delete") public String delete(@RequestParam("ids") List<String> ids) { int count = articleService.delete(ids); if (count > 0) { return "刪除了" + count + "篇文章"; } else { return "刪除文章失敗"; } } @PostMapping("/get") public List<Article> get(String id) { List<Article> list = articleService.get(id); return list; } }
業務層
@Service @RequiredArgsConstructor public class BookService { private final MongoTemplate mongoTemplate; /** * 新增文章 * * @param book * @return */ public int create(Book book) { Book save = mongoTemplate.save(book); return 1; } /** * 刪除文章 * * @param id */ public int delete(String id) { List<Book> deleteList = new ArrayList<>(); Query query = new Query(); query.addCriteria(Criteria.where("id").is(id)); mongoTemplate.remove(query,Book.class); return 1; } /** * 查詢文章 * @param id * @return */ public Book get(String id) { Book byId = mongoTemplate.findById(id, Book.class); return byId; } }
控制層
@RestController @RequestMapping("/book") @RequiredArgsConstructor public class BookController { private final BookService bookService; @PostMapping("/create") public String create(@RequestBody Book book) { int result = bookService.create(book); if (result > 0) { return "圖書建立成功"; } else { return "圖書建立失敗"; } } @PostMapping("/delete") public String delete(@RequestParam("id") String id) { int count = bookService.delete(id); if (count > 0) { return "刪除了" + count + "篇圖書"; } else { return "刪除圖書失敗"; } } @PostMapping("/get") public Book get(String id) { Book book = bookService.get(id); return book; } }
注意:通過mongoTemplate查詢時,實體類的id欄位型別需為String型別,否則查詢為null。
通過postman工具測試
建立文章和圖書,分佈對應兩種方式
資料庫中記錄如下
查詢文章和圖書
刪除文章和圖書
到此這篇關於SpringBoot分散式檔案儲存資料庫mongod的文章就介紹到這了,更多相關SpringBoot mongod內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45