专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

用WebFlux写个CURD是什么体验?

  今天我们继续来搞WebFlux!
  WebFlux最为人所诟病的是数据库的支持问题,毕竟数据是一个应用的生命,我们接触的大部分应用程序都是有数据库的,而WebFlux在这一方面的支持行一直比较弱,这也是大家总是吐槽它的原因。
  不过从Spring5开始,这一问题得到了一定程度的缓解。
  Spring官方在Spring5发布了响应式Web框架SpringWebFlux之后急需能够满足异步响应的数据库交互API,不过由于缺乏标准和驱动,Pivotal团队开始自己研究响应式关系型数据库连接ReactiveRelationalDatabaseConnectivity,并提出了R2DBC规范API用来评估可行性并讨论数据库厂商是否有兴趣支持响应式的异步非阻塞驱动程序。最早只有PostgreSQL、H2、MSSQL三家数据库厂商,不过现在MySQL也加入进来了,这是一个极大的利好。目前R2DBC的最新版本是0。9。0。RELEASE。
  松哥在接下来的文章中将会和大家演示R2DBC的用法,但是今天我们还是先来看看WebFluxMongoDB的用法,毕竟这是WebFlux较早支持的数据库之一,各种API都比较成熟,我们一步一步来。1。项目创建
  方便起见,我们这里就直接创建SpringBoot项目,首先创建一个SpringBoot项目,引入MongoDB依赖和WebFlux依赖,如下:
  注意我们这里选择的MongoDB依赖是SpringDataReactiveMongoDB,千万别选错了。
  项目创建完成后,我们先在application。properties中对MongoDB进行简单配置,如下(如果小伙伴们尚不熟悉MongoDB的操作,可以在公众号底部菜单找到松哥原创的MongoDB教程):spring。data。mongodb。port27017spring。data。mongodb。host127。0。0。1spring。data。mongodb。usernamemadminspring。data。mongodb。passwordm123spring。data。mongodb。databasetestspring。data。mongodb。authenticationdatabaseadmin
  多说一句,在之前的SpringBoot视频教程中,松哥对MongoDB也有过介绍,感兴趣的小伙伴戳这里:SpringBootVue微人事视频教程。
  配置完MongoDB后,我们的准备工作就算完成了。2。实体类与Dao
  接下来我们需要准备一个操作的实体类,这些都是JPA的基本操作,松哥就不再赘述,如果小伙伴们不熟悉的话,可以公号后台回复666查看原创的SpringBoot教程,里边有涉及到,实体类如下:DocumentpublicclassUser{IdprivateStringid;privateStringusername;privateStringaddress;publicStringgetId(){returnid;}publicvoidsetId(Stringid){this。idid;}publicStringgetUsername(){returnusername;}publicvoidsetUsername(Stringusername){this。usernameusername;}publicStringgetAddress(){returnaddress;}publicvoidsetAddress(Stringaddress){this。addressaddress;}}
  接下来我们再提供一个实体类操作的接口,如下:EnableMongoRepositoriespublicinterfaceUserDaoextendsReactiveMongoRepositoryUser,String{}
  自定义一个空的接口继承自ReactiveMongoRepository,里边什么都不用写,这套路就和松哥之前视频中介绍的JPA的用法如出一辙(毕竟都是SpringData家族),所以这块就没啥好说的,不赘述。3。测试接口
  接下来我们来看看测试接口。3。1添加
  首先我们来看看添加数据。RestControllerRequestMapping(user)publicclassUserController{AutowiredUserDaouserDao;PostMapping()publicMonoUseraddUser(RequestBodyUseruser){returnuserDao。save(user);}}
  添加完成后,返回刚刚添加成功的对象。save方法的返回值就是Mono。
  我们来看看测试效果:
  3。2查询
  再来看看查询效果:GetMapping()publicFluxUsergetAll(){returnuserDao。findAll();}GetMapping(valuestreamall,producesMediaType。TEXTEVENTSTREAMVALUE)publicFluxUserstreamGetAll(){returnuserDao。findAll();}
  我们提供了两个查询接口,一个就是返回Flux,里边包含多个对象,还有一个我设置了响应的ContentType为texteventstream,通过响应式流返回数据,具体参见【服务端推送数据,除了WebSocket你还能想到啥?】一文。
  我们来看看查询效果:
  可以看到两种不同的查询方式返回的数据格式也有差异。前者是以数组形式一次性返回数据,后者是以SSE的形式多次返回数据。3。3删除
  再来看看删除。
  按照RESTful规范,如果删除成功请求响应码就是200,如果删除失败请求响应码就是404,因此,我们开发出来的接口如下:DeleteMapping({id})publicMonoResponseEntityVoiddeleteUser(PathVariableStringid){returnuserDao。findById(id)。flatMap(useruserDao。delete(user)。then(Mono。just(newResponseEntityVoid(HttpStatus。OK))))。defaultIfEmpty(newResponseEntity(HttpStatus。NOTFOUND));}
  首先从数据库中查询出相关的数据,然后调用flatMap,在flatMap中对数据进行删除处理,删除完成后,给出一个200的响应码,如果查询的时候没有查询到数据,就给一个404响应码。
  可以看到,删除成功后,响应码为200:
  删除失败后,响应码为404:
  3。4修改
  再来看看修改,和前面的删除类似,先查询,再修改:PutMapping()publicMonoResponseEntityUserupdateUser(RequestBodyUseruser){returnuserDao。findById(user。getId())。flatMap(uuserDao。save(user))。map(unewResponseEntityUser(u,HttpStatus。OK))。defaultIfEmpty(newResponseEntity(HttpStatus。NOTFOUND));}
  如果修改的数据不存在的话,就会给出一个404响应:
  3。5自定义查询方法
  松哥之前的SpringDataJpa中讲的一些查询API,这里同样是适用的(公号后台回复666获取之前的教程)。
  例如我们可以在UserDao中自定义一个查询方法:EnableMongoRepositoriespublicinterfaceUserDaoextendsReactiveMongoRepositoryUser,String{FluxUserfindUserByUsernameContaining(Stringname);}
  然后添加一个接口调用该方法:GetMapping(byname)publicFluxUsergetUserByName(Stringname){returnuserDao。findUserByUsernameContaining(name);}
  这样该接口就可以查询名字中包含某关键字的所有用户了。
  其他关于JPA的用法这里都是适用的,因为在之前的文章中讲过,松哥这里就不再赘述了。4。小结
  好啦,今天我们就用WebFlux写了一个简单的CURD,大家先来感受下WebFlux的基本用法,后面的文章将和大家分享WebFlux如何连接关系型数据库,敬请期待。
  原文链接:https:mp。weixin。qq。comsKUDS8ss6BRIkMWwjCeYg

LPL胜者组TESvsRNG第四场RNG永不言弃,让一追三恭喜RNG挺进决赛!!我滴个乖乖啊,有代GALA!!前期RNG天崩开局,不放弃,一波波顶住TES的进攻,等待GALA厄斐琉斯发育起来,烟火或许会迟到,但不会缺席!!都2022了,R王者荣耀是我见过最恶心玩家的游戏王者荣耀如期迎来了新赛季,做为一个老玩家,是从英雄战迹就开始玩的,新赛季还是希望官方有所改变的。下载来进入游戏,之前的几百个好友依然没有回归,仅有两三个狂热分子依然坚持玩。我是能理游戏vs家长(7)小蛙烈车他怎么用了?衰神烈车他还被家长们围着攻击,我们要去救他,除了烈车,还有小君和小君带领的部队。小蛙那怎么办?衰神只有你快点发送信号了。小蛙哦,那我尝试能不能发出去。外面张天中王者荣耀109位英雄的上架时间截止2022年4月18日,纯属自己瞎玩记录。2022年2位04月14日桑启01月06日暃2021年3位11月16日金蝉06月23日云缨01月14日司空震2020年6位12月08日澜TES不敌RNG,谁是最大的背锅位做为英雄联盟8年的老玩家,今天看了TES与RNG的精彩对局,不知到大家有没有看啊,有两把都感觉是TES中单天肥开局输了,我也很纳闷,也许再一次说明了这是一个团队游戏的原因,也许是我植物大战僵尸无限模式游戏攻略最近爱上了这款植物大战僵尸的小游戏,陷入了无限模式中不能自拔,也得出了一些玩游戏的小经验,特地做出这篇小攻略分享给大家。第1关选择的道具阳光蘑菇紫色小蘑菇蓝色冰冻豌豆墓碑苔藓布阵第大逆转裁判编年史全球累计销量突破50万份,官方发文表示感谢卡普空(CAPCOM)官方宣布,其法庭辩论游戏大逆转裁判编年史(TheGreatAceAttorneyChronicles)的全球累计销量突破50万份,并向支持该游戏的玩家表示了感三国志9隋唐群英杨李武三方争雄,安禄山和刘知远后悔出生自古就有关公战秦琼孰强孰弱的口水话题,因为大家实在是太喜欢三国和隋唐这两个英雄辈出的时代了。三国志9逐鹿九州MOD有诸多的趣味假想章节,自然也少不了隋唐群英,对于钟爱这一代游戏的玩众多传世手游,该选择哪款传奇世界的游戏也是一代的回忆,比起热血传奇他没有那么多的受众,但还是有很多忠实的玩家,传世的手游也像雨后春笋一样出现,现在传奇世界的手游有很多种类,各种广告也看花看眼那么玩家们应该VRroguelite游戏CompoundMetaQuest2版预计今年推出了2022年4月17日449hr0hr据RoadtoVR报道,由独立开发者BevanNotDeadMcKechnie开发的VRroguelite游戏Compound早在2018年便以这个80后靠王者荣耀赚到93亿身家2015年8月,知乎上出现了一个热门问题手机游戏做电竞项目可行吗?当时电竞在国内已经萌芽发展15年,不过相关赛事以电脑上运行的端游为主,手游操作与端游存在差异,竞技观赏性也远不如端
S11转会期韩国市场身价最高的3位中单选手!买不起?游戏马蹄铁原创S11全球总决赛结束之后紧接着就是每年最重要的11月转会期,目前全球各大俱乐部已经开始行动起来了,首先是要接触他们想要的已经成为自由人的选手,接触并不等于直接签约,通cos王者荣耀达摩的小哥火了!一身肌肉媲美漫画人物,网友真帅最近,王者荣耀六周年的共创之夜上有一位cos达摩的小哥火出圈了而他爆火的法宝是他那一身足以媲美动画的肌肉不知道大家有没有玩过王者荣耀游戏中的达摩是一位战士所以一身肌肉是必不可少的而暴雪终究没能熬过这个冬天真新镇小茂文暴雪第一位女性总裁JenOneal马上要离职了,此时距离她成为暴雪总裁,还不满3个月时间。今年8月,暴雪前总裁J。AllenBrack因性骚扰丑闻离职后,JenOnea韩剧鱿鱼游戏观后感人性心底的善与恶最近多个平台解说的鱿鱼游戏,火爆程度就不再吹捧了。我去看了全部!但看完后,感觉好像那里不太顺畅,思索后发现主角的人物性格塑造,不大统一。男主,邋遢又内心善良形象,但剧情中的种种细节王者荣耀能吸引这么多玩家,正是因为它国风元素满满周末陪女朋友看了一部美国电影。说实话兴趣不大,一直在打王者荣耀,我觉得东方文化比西方文化好理解,不光能看懂还能玩懂。电影看完之后,我赶紧拉着她去找了一家餐厅吃饭,等餐的时候又打了两一组漫画科普,中国网吧的兴衰史,只有上了30岁的人才懂一组漫画科普,中国网吧的兴衰史,只有上了30岁的人才懂!来看我我的网吧第一个游戏是扫雷第二个是主题医院第三个是diablo1第四个是大富翁第五个是一堆QQ游戏第六个是三国群英第七个外媒爆料PUBG2可能在2022年的夏天或秋天发布近日有国外媒体人在自己的社交平台称最近听到来自韩国的一些关于PUBG2正在开发并且已经有所成果的消息,PUBG2可能会在2022年夏季或者秋季公布。自从PCS5结束之后,绝地求生的内容带量,快手游戏合伙人计划有什么特别之处?快手在游戏联运发行上做了更多的尝试。早前快手在北京国际游戏创新大会上表示,英雄联盟手游预热期间在快手上有超过1000万的预约量,排在外部平台首位。现在游戏在快手上也有1400万的下EDG夺冠,这个翻译小姐姐也火了!中英韩三语无缝切换,圈粉大批网友近日,英雄联盟S11总决赛,中国英雄联盟职业联赛(LeagueofLegendsProLeague,LPL)赛区战队EDG电子竞技俱乐部以32战胜韩国英雄联盟职业联赛(League瑶妹自然之灵重做上线?嫦娥双喜临门,亚瑟扁鹊6元皮肤来袭文可儿游戏说原创要问王者荣耀热度比较高的几位英雄,除了猴子孙尚香这两位英雄之外,瑶妹可以说是相对来说热度比较高的英雄了,并且这位英雄十分受到女玩家的喜爱,所以推出皮肤销量一定会非常最火爆的传奇手游冰雪传奇他到底有什么好的地方呢冰雪传奇现在是非常的受大众欢迎,1比1的还原了冰雪传奇端游的版本玩法,采用了2d的清晰画面,他没有夸张的色彩,也没有像普通传奇那种单调无味的行为模式!它是一款,在普通传奇上面做出了
友情链接:快好知快生活快百科快传网中准网文好找聚热点快软网