摘要:上一篇文章中我們已經(jīng)簡單搭建了的框架,今天就集成完成一個用戶管理系統(tǒng)。如果的就直接下一步,下一步按要求安裝就好了。目錄下的是的查詢客戶端,可以執(zhí)行查詢操作。我上面的刪除舊出現(xiàn)了無法刪除的問題,最后使用的完成的,這是個同步操作。
上一篇文章中我們已經(jīng)簡單搭建了webflux的框架,今天就集成mongodb完成一個用戶管理系統(tǒng)。1. 安裝MongoDb
直接去官網(wǎng)下載安裝包:
https://www.mongodb.com/downl...
選擇對應(yīng)的操作系統(tǒng),我的是windows,然后選擇zip,還是msi。我下載的zip也就是綠色免安裝。如果msi的就直接下一步,下一步按要求安裝就好了。
zip啟動方式:
到bin目錄下打開cmd命令窗口 運(yùn)行:
mongod.exe --dbpath C:Toolsmongodbdb
dbpathshi 是設(shè)置數(shù)據(jù)備份目錄,必須要設(shè)置,否則啟動不了。
bin目錄下的 mongo.exe是mongodb的查詢客戶端,可以執(zhí)行查詢操作。一些查詢命令可以直接去官網(wǎng)看。
show dbs:顯示當(dāng)前所有文檔庫,相當(dāng)于數(shù)據(jù)庫
use test:選擇test庫
db.user.find():查詢所有user文檔數(shù)據(jù)
db.user.drop():刪除所有user文檔
pom文件依賴:
org.springframework.boot spring-boot-starter-data-mongodb-reactive
配置連接:
spring.data.mongodb.host=localhost spring.data.mongodb.database=test spring.data.mongodb.port=270173.dao層
package com.mike.dao; import org.springframework.data.mongodb.repository.ReactiveMongoRepository; import org.springframework.stereotype.Repository; import com.mike.po.User; /** * The class UserDao.java */ @Repository public interface UserDao extends ReactiveMongoRepository{ }
ReactiveMongoRepository 已經(jīng)幫你實現(xiàn)了增刪該查,如果需要別的方法,需要自己添加實現(xiàn)接口。具體寫法和JPA類似
4.service層package com.mike.service; 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.Service; import com.mike.dao.UserDao; import com.mike.po.User; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; /** * The class UserService.java */ @Service public class UserService { @Autowired private UserDao userDao; @Autowired private MongoTemplate mongoTemplate; public Mono5.controller層saveOrUpdateUser(User user){ return userDao.save(user); } public Mono findById(String id){ return userDao.findById(id); } public Flux findAll(){ return userDao.findAll(); } public void deleteById(String id){ // 使用mongoTemplate來做刪除 直接使用提供的刪除方法不行 Query query = Query.query(Criteria.where("id").is(id)); mongoTemplate.remove(query, User.class); //userDao.deleteById(id); 這樣無法刪除,不知道為什么 } }
package com.mike.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.mike.po.User; import com.mike.service.UserService; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; /** * The class UserController.java */ @Controller public class UserController { @Autowired private UserService userService; @PostMapping("/user") public String save(User user,final Model model){ Mono6.po層u = userService.saveOrUpdateUser(user); model.addAttribute("user", u); return "redirect:/users"; } @GetMapping("/user/find/{id}") @ResponseBody public Mono find(@PathVariable("id") String id){ return userService.findById(id); } @GetMapping("/users") public String findAll(final Model model){ Flux users= userService.findAll(); model.addAttribute("users", users); return "user"; } @GetMapping("/user/delete/{id}") public String delete(@PathVariable("id") String id){ userService.deleteById(id); return "redirect:/users"; } }
package com.mike.po; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Field; /** * The class User.java */ public class User { @Id @Field("_id") private String id; private String name; private String sex; private String job; private String address; private String phone; /** * @return the id */ public String getId() { return id; } /** * @param id the id to set */ public void setId(String id) { this.id = id; } /** * @return the name */ public String getName() { return name; } /** * @param name the name to set */ public void setName(String name) { this.name = name; } /** * @return the sex */ public String getSex() { return sex; } /** * @param sex the sex to set */ public void setSex(String sex) { this.sex = sex; } /** * @return the job */ public String getJob() { return job; } /** * @param job the job to set */ public void setJob(String job) { this.job = job; } /** * @return the address */ public String getAddress() { return address; } /** * @param address the address to set */ public void setAddress(String address) { this.address = address; } /** * @return the phone */ public String getPhone() { return phone; } /** * @param phone the phone to set */ public void setPhone(String phone) { this.phone = phone; } }7. 總結(jié)
和正常的關(guān)系型數(shù)據(jù)庫的操作一樣,只不過有些問題想不明白。我上面的刪除舊出現(xiàn)了無法刪除的問題,最后使用的mongodbTemplate完成的,這是個同步操作。為什么會出現(xiàn)這樣的問題呢?這就是響應(yīng)式編程的坑,如果你不理解就會出現(xiàn)問題。增刪改查完了,但是沒有頁面展示,寫一篇寫頁面。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/19539.html
摘要:在配置下上面啟動的配置數(shù)據(jù)庫名為賬號密碼也為。突出點(diǎn)是,即非阻塞的。四對象修改包里面的城市實體對象類。修改城市對象,代碼如下城市實體類城市編號省份編號城市名稱描述注解標(biāo)記對應(yīng)庫表的主鍵或者唯一標(biāo)識符。 摘要: 原創(chuàng)出處 https://www.bysocket.com 「公眾號:泥瓦匠BYSocket 」歡迎關(guān)注和轉(zhuǎn)載,保留摘要,謝謝! 這是泥瓦匠的第104篇原創(chuàng) 文章工程: JDK...
摘要:一個簡單的用戶管理的已經(jīng)完成,現(xiàn)在我們需要在頁面上展示,方便用戶管理。創(chuàng)建首頁頁面首頁歡迎頁面首頁實戰(zhàn)課程你想學(xué)點(diǎn)啥上班摸魚下班充電案例上手本課程是一個系列基礎(chǔ)教程,目標(biāo)是帶領(lǐng)讀者上手實戰(zhàn),課程以新版本的核心概念作為主線。 一個簡單的用戶管理的CRUD已經(jīng)完成,現(xiàn)在我們需要在頁面上展示,方便用戶管理。盡管現(xiàn)在已經(jīng)流行前后分離開發(fā),但是在一些小公司做的項目并不需要前端開發(fā)人員,頁面也是后...
摘要:使用則需要及以上版本。開發(fā)使用框架七系列教程目錄系列教程大綱快速入門實踐實踐整合整合中和實踐整合中實現(xiàn)緩存中實現(xiàn)通信集成測試及部署實戰(zhàn)圖書管理系統(tǒng) WebFlux 系列教程大綱 一、背景 大家都知道,Spring Framework 是 Java/Spring 應(yīng)用程序跨平臺開發(fā)框架,也是 Java EE(Java Enterprise Edition) 輕量級框架,其 Spring ...
摘要:今天小編就來分享一份華為剛剛首發(fā)的響應(yīng)式微服務(wù)實戰(zhàn)這份主要包含響應(yīng)式微服務(wù)架構(gòu)實現(xiàn)過程中所應(yīng)具備的技術(shù)體系和工程實踐,在組織結(jié)構(gòu)上分如下篇。 今天小編就來分享一份華為剛剛首發(fā)的Spring響應(yīng)式微服務(wù)(Spring Boot 2+Spring 5+Spring Cloud實戰(zhàn))! 這份PDF...
摘要:響應(yīng)式編程是基于異步和事件驅(qū)動的非阻塞程序,只是垂直通過在內(nèi)啟動少量線程擴(kuò)展,而不是水平通過集群擴(kuò)展。三特性常用的生產(chǎn)的特性如下響應(yīng)式編程模型適用性內(nèi)嵌容器組件還有對日志消息測試及擴(kuò)展等支持。 摘要: 原創(chuàng)出處 https://www.bysocket.com 「公眾號:泥瓦匠BYSocket 」歡迎關(guān)注和轉(zhuǎn)載,保留摘要,謝謝! 02:WebFlux 快速入門實踐 文章工程: JDK...
閱讀 3325·2021-11-23 09:51
閱讀 2451·2021-11-09 09:46
閱讀 1483·2019-08-30 15:54
閱讀 3131·2019-08-30 14:22
閱讀 2915·2019-08-29 12:40
閱讀 1637·2019-08-26 10:33
閱讀 1785·2019-08-23 17:09
閱讀 1561·2019-08-23 16:11