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

WebFlux操作MySQL是种什么体验

  看这个需要看我以前分享了很多WebFlux的知识哦
  好啦,开始今天的正文。
  前面我们用WebFlux已经写了一个CURD了,不过数据库用的是MongoDB。很多人对WebFlux持怀疑态度,包括松哥之前发文章的时候,还有人在说不能连接MySQL的WebFlux是没有任何意义的!这句话没错,但是我们也要看到WebFlux正处于一个高速发展的时期,所有不可能的事情都会变得可能,所有以前没有的功能以后都会有,WebFlux的变化速度是肉眼可见的。
  比如我们今天要介绍的R2DBC就能在一定程度上打消一些人的疑虑,虽然这个工具还不是特别完美,但是我们看到了WebFlux在努力解决这些存在的问题,我们也有理由相信WebFlux未来会越来越好。
  好啦,不吹了,还是来看点实际的东西吧。1。什么是R2DBC?
  首先大家要知道,我们最常使用的JDBC其实是同步的,而我们使用WebFlux的目的是为了通过异步的方式来提高服务端的响应效率,WebFlux虽然实现了异步,但是由于JDBC还是同步的,而大部分应用都是离不开数据库的,所以其实效率本质上还是没有提升。
  那么怎么办呢?有没有异步的JDBC呢?有!
  目前市面上异步JDBC主要是两种:ADAB:ADBA是Oracle主导的Java异步数据库访问的标准API,它将会集成于未来的Java标准发行版中。但是目前发展比较慢,只提供OpenJDK的沙盒特性供开发者研究之用。R2DBC:R2DBC是Spring官方在Spring5发布了响应式Web框架SpringWebFlux之后急需能够满足异步响应的数据库交互API,不过由于缺乏标准和驱动,Pivotal团队开始自己研究响应式关系型数据库连接ReactiveRelationalDatabaseConnectivity,并提出了R2DBC规范API用来评估可行性并讨论数据库厂商是否有兴趣支持响应式的异步非阻塞驱动程序。最早只有PostgreSQL、H2、MSSQL三家数据库厂商,不过现在MySQL也加入进来了,这是一个极大的利好。目前R2DBC的最新版本是0。9。0。RELEASE。
  需要注意的是,这两个都不是对原来JDBC的补充,都是打算重新去设计数据库访问方案!
  好了,现在大家对R2DBC有一个基本的认知了,接下来我们就通过一个简单的例子,我们一起来体验一把如何通过R2DBC来操作MySQL数据库。2。代码实践2。1创建项目
  首先我们来创建一个SpringBoot项目,引入WebFlux和R2DBC依赖,如下图:
  项目创建成功后,pom。xml文件中会自动加入R2DBC相关的依赖,如下:dependencygroupIdorg。springframework。bootgroupIdspringbootstarterdatar2dbcartifactIddependencydependencygroupIdorg。springframework。bootgroupIdspringbootstarterwebfluxartifactIddependencydependencygroupIddev。mikugroupIdr2dbcmysqlartifactIdscoperuntimescopedependencydependencygroupIdmysqlgroupIdmysqlconnectorjavaartifactIdscoperuntimescopedependency
  接下来我们在application。properties中配置数据库的连接信息,注意这次的配置和之前的有些不同:spring。r2dbc。urlr2dbcs:mysql:localhost:3306test01spring。r2dbc。usernamerootspring。r2dbc。password123
  配置文件除了属性的key不同之外,数据库的连接协议也从jdbc变为r2dbc了。
  OK,如此,我们的准备工作就算完成了。2。2数据库脚本
  我们准备一个简单的数据表,如下:
  这个脚本很简单,应该不用我提供了吧。2。3CURD
  我们首先来提供一个实体类,如下:publicclassUser{IdprivateLongid;privateStringusername;privateStringaddress;省略gettersetter}
  然后我们需要一个UserRepository接口,这个接口直接继承自ReactiveCrudRepository即可,这跟之前MongoDB的玩法比较类似。publicinterfaceUserRepositoryextendsReactiveCrudRepositoryUser,Long{}
  接下来我们来定义User表的处理器,这个也跟之前MongoDB中的差不多,如下:importstaticjava。lang。Long。parseLong;importstaticorg。springframework。http。MediaType。APPLICATIONJSON;importstaticorg。springframework。web。reactive。function。server。ServerResponse。notFound;importstaticorg。springframework。web。reactive。function。server。ServerResponse。ok;ComponentpublicclassUserHandler{AutowiredUserRepositoryuserRepository;publicMonoServerResponsegetAllUsers(ServerRequestserverRequest){returnok()。contentType(APPLICATIONJSON)。body(userRepository。findAll(),User。class);}publicMonoServerResponseaddUser(ServerRequestserverRequest){returnok()。contentType(APPLICATIONJSON)。body(userRepository。saveAll(serverRequest。bodyToMono(User。class)),User。class);}publicMonoServerResponsedeleteUser(ServerRequestserverRequest){returnuserRepository。findById(parseLong(serverRequest。pathVariable(id)))。flatMap(useruserRepository。delete(user)。then(ok()。build()))。switchIfEmpty(notFound()。build());}}
  最后我们再来配置请求地址路由,如下:ConfigurationpublicclassRouterConfiguration{BeanRouterFunctionServerResponseuserRouterFunction(UserHandleruserHandler){returnRouterFunctions。nest(RequestPredicates。path(user),RouterFunctions。route(RequestPredicates。GET(),userHandler::getAllUsers)。andRoute(RequestPredicates。POST(),userHandler::addUser)。andRoute(RequestPredicates。DELETE({id}),userHandler::deleteUser));}}
  这一块其实都没啥好说的,如果大家感到困惑,可以参考我们前两篇文章中的讲解。用WebFlux写个CURD是什么体验?WebFlux中的请求地址路由怎么玩?3。测试
  最后我们来简单测试下。
  查询:
  添加:
  更新:
  有id并且id已经存在,默认就是更新。
  删除:
  删除成功响应200:
  删除成功响应200
  删除失败响应404:
  删除失败响应404
  好啦,这就是一个简单的WebFlux操作关系型数据库的案例
  原文链接:https:mp。weixin。qq。comsBq3ECq7LVvT2AqFygdy6tQ

年底没游戏玩了?这几款手游还不快装上?点击骑士您是点击骑士!使用您的手指在这个闲散点击游戏中疯狂地点击以杀死成群的敌人,并杀死大老板!您准备好迎接这个伟大的冒险了吗?您的王国正在等待您!四季物语牧场自由恋爱建造等元素融十二月精品手游,这些游戏你是否玩过橡皮人大作战橡皮人大作战是一款全新的放置策略类游戏。在城市街头游走圈粉,收集散落人群,同化其他小团体,搭建最强阵容!网络小说家模拟从默默无闻的小说写手成长为家喻户晓的网文大神吧!开这些游戏超好玩,十二月手游推荐勇者与探险传说莱恩王国能在人类与恶魔的边境建立,全都是因为第一代莱恩王和他的骑士保罗,获得了神明的祝福后,在魔泉森林击败了恶魔,收复了人类失去已久的领土。此后,众多的探险家们都加入玩个痛快!这些手游值得一玩黑潮之上黑潮之上是一款以都市异能的背景多维穿插的剧情具有挑战的玩法绝佳的视觉展现震撼的听觉感受为特色的二次元卡牌游戏。丰富的战斗策略组合突破传统RPG,竞技卡牌团战玩法搭配百张套牌十二月手游新潮流,这些都是精品大作梦境侦探大侦探梦宝在一个周二的下午误入梦境世界。梦境大陆的时光水晶被一群盗贼破坏,梦境中的时间从此变得不再稳定,这片大陆陷入了一片混乱。为了帮助他们恢复往日安宁,梦宝踏上了冒险的旅游戏休闲的好选择,热门手游盘点隐世录欢迎来到BUG手游隐世录,这里不生产BUG,但也不扼杀BUG。隐世最终的呈现形态,将由Player决定。BUG1双重世界抉择,探索古风幻想与电子赛博的边界BUG2虚拟社会实验再也不怕游戏荒,这几款手游可别错过技能大师多职业多选择,力敏智三系换着玩最牛离线挂机,一天只玩两小时最短日常任务,完成只要10分钟独特天赋系统,能抗能打根本不怂手动副本太麻烦?一键扫荡轻松愉快上百种技能任意搭配萌趣假期没游戏玩?这几款手游还不快装上?魔法洞穴2进入古怪的洞穴,寻找源源不断的宝藏,打败不同的怪物,用技能把自己打造成不同的职业,让自己变得更强,走得更深,发现更多的秘密。。记住,及时逃脱才是成功的关键。住宅梦物语住宅周末无聊,这几款手游没人会错过信任的进化合作自私的基因这是一款教你做人的游戏!信任自古都是一个引人思考的话题,你想被人信任吗?你想体验一个关于信任的游戏吗?不管你想不想,这游戏看得我脑壳疼!全职觉醒全职觉醒是一远离游戏荒,这些有意思手游别错过勇者必须赢勇者必须赢是一款丧尸题材的末日动作卡牌游戏,你将带领自己的队伍,通过不断获取各类特殊武器,并且通过技能和职业的搭配,击溃尸潮,做一个拯救世界的勇者!PartyAnimal娱乐性十足,有这些手游陪你过元旦说剑武是什么?侠是什么?江湖,又是什么?每个人都有自己的答案,说剑也给你答案,此作为您讲述一名剑客毕生浸剑学的故事。个关卡玩法截然不同,需触需划,时急时缓,最终达到会当凌绝顶的境界
开服特惠活动开服特惠限时特惠根据打折用灵符购买礼包(元宝礼包精灵礼包火龙礼包。)元宝礼包(玛法大陆的流通的一种稀缺货币。用于购买稀有道具)精灵礼包获得元素精灵盛典(时装)购买使用永久激活。激活魔族即将抵达征途2战场!12。17开启年终决战魔族来袭!即将抵达战场!12月17日,征途22021年终决战版本开启,推出魔族入侵等全新玩法,激烈的热血战场诚邀英雄集结,体验年终最热辣的全民战斗!同时,为玩家送出一年一度的年终大真结局需要用完美存档来换!盘点那些难到离谱的TrueEnd达成条件玩游戏最基本的目标不用多说,自然要数通关,不过时下对通关的定义有许多种。例如玩缉凶游戏时取得了主角被神秘凶手杀死之类的BadEnd(坏结局)时,虽说勉强也是通关,但大家又是否会觉得平行刺杀超凡盛会剧本杀测评复盘真相凶手是谁谋杀之谜需要复盘请私信小编,小编看到后第一时间回复您哦。故事类型架空硬核推理还原标准人数玩家7人DM1人测评时间45h测评分数硬核还原推理无剧透点评!!整体感受说实话,这是一个少有的能把变这里有,偶像的一切!偶像梦幻祭2这里有,偶像的一切!偶像梦幻祭2最新版是一款自由度很高的偶像养成类音乐手游,游戏中梦之咲全员重新出发,49位风格各异的美少年,有着多达14个高颜值组合,而你作为本次团队的金牌制作人FunPlus游戏主题曲DoomsdayParty荣登AppleMusic全球推荐榜近日,由FunPlus音频总监张志伟作曲中国国际首席爱乐乐团演奏制作的StateofSurvival主题曲DoomsdayParty已在各大音乐平台AppleMusicKKBOX,机密文件曝光索尼曾计划将PSNOW推向移动端由于法庭文件的公开,Epic与苹果的诉讼曝光了许多公司未宣布的计划。而近期,TheVerge网站发现的另一份文件表明,索尼曾计划将其PlayStationNow云游戏服务引入移动设哈利波特手游两张卡牌同一件事,这些小细节你们发现了吗?在哈利波特魔法觉醒中,一些还原原著的卡牌原画背后的故事一直被玩家们所津津乐道。不少卡牌的画面彩蛋也是百看不厌,百玩不腻。在不断的仔细研究之后,你们有没有发现更多卡牌的小彩蛋呢今天,英雄联盟背后的故意打野不再是阿奇,我玩妖姬再也不敢把对面压在塔后面打。下路不是耀仔和阿豪,我时常也会抱怨几句下路真是废物。上单七仔的史前巨鳄,我也只能在翻相册的时候再见到了。我为什么喜欢英雄联盟?或英雄联盟手游2。6版本升级MMR机制后,还能靠摆烂上分吗?上一篇文章,我熬了个通宵。熬夜看完一堆开发者日志后,又熬夜写了英雄联盟手游MMR机制的匹配原理,并且分析了如何才能正确而有效的避免。然后还给自己挖了个下篇的坑,这一文就是来填坑的。斗鱼年末福利放送,永劫无间暴雪抢爆了!看到阴阳师才是真良心一晃眼一年又即将过去,随着年末的到来各种福利活动也是接踵而至,近日斗鱼就有一场年末福利大放送活动格外引人关注,这是由斗鱼与网易联手开启的玩家年度盛典,整个活动持续半个多月时间,除了
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网