范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

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 框架 Spring WebFlux 之后急需能够满足异步响应的数据库交互 API,不过由于缺乏标准和驱动,Pivotal 团队开始自己研究响应式关系型数据库连接 Reactive Relational Database Connectivity,并提出了 R2DBC 规范 API 用来评估可行性并讨论数据库厂商是否有兴趣支持响应式的异步非阻塞驱动程序。最早只有 PostgreSQL 、H2、MSSQL 三家数据库厂商,不过现在 MySQL 也加入进来了,这是一个极大的利好。目前 R2DBC 的最新版本是 0.9.0.RELEASE。
  需要注意的是,这两个都不是对原来 JDBC 的补充,都是打算重新去设计数据库访问方案!
  好了,现在大家对 R2DBC 有一个基本的认知了,接下来我们就通过一个简单的例子,我们一起来体验一把如何通过 R2DBC 来操作 MySQL 数据库。  2.代码实践2.1 创建项目
  首先我们来创建一个 Spring Boot 项目,引入 WebFlux 和 R2DBC 依赖,如下图:
  项目创建成功后,pom.xml 文件中会自动加入 R2DBC 相关的依赖,如下:       org.springframework.boot     spring-boot-starter-data-r2dbc       org.springframework.boot     spring-boot-starter-webflux       dev.miku     r2dbc-mysql     runtime       mysql     mysql-connector-java     runtime 
  接下来我们在 application.properties 中配置数据库的连接信息,注意这次的配置和之前的有些不同:  spring.r2dbc.url=r2dbcs:mysql://localhost:3306/test01 spring.r2dbc.username=root spring.r2dbc.password=123
  配置文件除了属性的 key 不同之外,数据库的连接协议也从 jdbc 变为 r2dbc 了。
  OK,如此,我们的准备工作就算完成了。  2.2 数据库脚本
  我们准备一个简单的数据表,如下:
  这个脚本很简单,应该不用我提供了吧。  2.3 CURD
  我们首先来提供一个实体类,如下:  public class User {     @Id     private Long id;     private String username;     private String address;     //省略 getter/setter }
  然后我们需要一个 UserRepository 接口,这个接口直接继承自 ReactiveCrudRepository 即可,这跟之前 MongoDB 的玩法比较类似。  public interface UserRepository extends ReactiveCrudRepository {  }
  接下来我们来定义 User 表的处理器,这个也跟之前 MongoDB 中的差不多,如下:  import static java.lang.Long.parseLong; import static org.springframework.http.MediaType.APPLICATION_JSON; import static org.springframework.web.reactive.function.server.ServerResponse.notFound; import static org.springframework.web.reactive.function.server.ServerResponse.ok;  @Component public class UserHandler {      @Autowired     UserRepository userRepository;      public Mono getAllUsers(ServerRequest serverRequest) {         return ok().contentType(APPLICATION_JSON)                 .body(userRepository.findAll(), User.class);     }      public Mono addUser(ServerRequest serverRequest) {         return ok().contentType(APPLICATION_JSON)                 .body(userRepository.saveAll(serverRequest.bodyToMono(User.class)), User.class);     }      public Mono deleteUser(ServerRequest serverRequest) {         return userRepository.findById(parseLong(serverRequest.pathVariable("id")))                 .flatMap(user -> userRepository.delete(user).then(ok().build()))                 .switchIfEmpty(notFound().build());     } }
  最后我们再来配置请求地址路由,如下:  @Configuration public class RouterConfiguration {     @Bean     RouterFunction userRouterFunction(UserHandler userHandler) {         return RouterFunctions.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.com/s/Bq3ECq7LVvT2AqFygdy6tQ

和平精英高校赛总冠军电竞是人玩游戏,不是游戏玩人西安欧亚学院的4个小伙子夺得2021和平精英高校赛总冠军。受访者供图经过近两个月的比拼,2021和平精英高校赛(以下简称高校赛)于12月5日晚在广州大学城落下帷幕。来自西安欧亚学院这一次我终于能在暗黑里扮演恶魔了对于现在的游戏来说,竞技早已经成为了游戏中不可或缺的一个部分。无论我们从市场表现还是玩家需求上来看,这种令玩家间产生竞争的玩法都给游戏带来了更多的乐趣和深度,也为游戏的热度与粘性取第三方PS5手柄Reflex问世高度自定义支持背键据IGN报道,第三方手柄厂商Scuf推出了他们针对PS5设计的全新ReflexReflexProReflexFPS手柄。从表面上看,Reflex手柄与PS5DualSense手柄差Netflix再推衍生手游,锁定末日题材超休闲韩国游戏厂商Supercent在近日表示,网飞旗下的热门网剧王国将被公司改编成手机游戏,于2022年初上线。Supercent与王国的制作公司Astory签署了一项协议,将这部结合宝可梦到了如今的DP复刻,有哪些精灵是长期都有的?关于DP复刻的议论,有好有坏,有的认为在剑盾的基础下还制作二头身的游戏风格显得没有什么诚意,而有的则认为二头身也有着自己的特色,毕竟从场景渲染等方面来看,没有给人不舒服的感觉小二个零之战线评测沉浸式互动养成二次元休闲卡牌佳作2021年的最后一个月,寒冬时节,整月里只有寥寥三两款二次元手游上线,市场表现趋于平缓,而在12月2日上线的零之战线,就是其中一款品质非常优秀的二次元卡牌养成黑马,至于黑马黑在哪儿纪念碑谷开发商宣布已在现实中种下100万棵树此前,为保护世界的环境与生态,纪念碑谷开发商Ustwo与环保组织Ecologi进行了合作。每当游戏阿尔芭野生动物冒险被下载一次,他们就会种上一棵树来表示对玩家的感谢,目标是种植10英雄联盟的世界观里,暗影岛是个什么样的地方暗影岛故事分为三个阶段,暗影岛形成,暗影岛扩张,破败之战。暗影岛如何形成,关键事件,生命之水,福光岛,佛耶戈。暗影岛的前身叫做福光岛,在瓦罗兰大陆远古时期,福光岛就伴随海洋形成。群贵族10的玩家有福利,全套皮肤换金名,平民玩家也可以领取典藏爱生活,爱游戏,大家好,我是阿呆。期待大家的关注,我会在这里分享更多有趣的最新资讯。前言在王者荣耀中,全皮肤全英雄的账号肯定是大家非常羡慕的,除了特殊锦鲤账号之外,我相信像这种账号王者荣耀段位重新划分,6折皮肤活动即将上线,荣耀典藏免费玩hello大家好,我是小白君!昨天小白君说到,小乔周瑜的纯白花嫁即将返场,目前这个消息的可信度高达70,不过,很可惜,小白君还是没有在官方那得到确切消息。王者荣耀官方最近上线新内容日入200的元宇宙概念游戏AxieInfinity为什么能爆火?大家好,我是阿昊。现在人们对游戏的需求无非就两种一种是真正喜欢玩的游戏。一种是可以获得收益的游戏。遇到一款既好玩又能获得收益的游戏很难得的。最近一款游戏AxieInfinity渐渐
SN艰难取胜,21击败V5拿下胜利,而观众们却对此十分不服最近SN与V5的比赛结果已经出来了,SN21击败了V5战队,虽然过程有点艰难,但好在结果还是挺不错的。SN能够击败V5,再加上他们现在的成绩,想要进入季后赛争夺S赛名额的概率还是挺为了正面决战击败不求人拼了!鲨鱼彻夜连胜,成功登顶无敌战神前言说起虎牙和平精英主播鲨鱼哟,相信大家一定非常熟悉。毕竟在很久之前,鲨鱼就凭借着幽默风趣的直播风格和强悍的游戏操作,成为了一位和平精英知名主播,深受广大玩家喜爱。而在近日,鲨鱼也永劫无间令人上瘾,牧冬连肝十小时,锦鲤杯强势吃鸡炸鱼塘?相信大家一定都知道绝地求生这款游戏吧,作为一款枪战生存类游戏,绝地求生在刚上线就引起了玩家们非常高的兴趣,现在也成了端游一大巨头。而在最近,想必大家一定都听说了,网易新出了一款武侠管泽元预测IG本周三场全败!第一场结果出来了,IG被反向毒奶最近管泽元在节目中预测IG在本周的比赛将会三场全败,而这样的预测自然也被观众们调侃为管泽元又将要开始他的管理学了。但让人意外的是,这一次管泽元还真的没有削减功力,第一场对决TES的TES状态为何不稳?晴天发挥问题不大,但下路成隐患最近TES的成绩引起了观众们的重视。这支原本打出强势表现的战队,在引入强援的同时却没有打出相应的成绩,让很多观众十分意外。为了保证成绩,TES除了引入上单晴天之外,还将预言家重新调张大仙凌晨下播偷摸捐款,向灾区捐了两百万,这还不好意思说吗?说到王者荣耀中,人气最高的主播是谁?想必大家都回复都五花八门的,有时候梦泪的,有时候北慕的。不过要真的说人气最高的主播,还要当属张大仙,在去年冬冠杯的时候,王者荣耀曾对主播的人气进Doinb超自信!直播表示不服输掉的比赛,喊话表示现在稳赢最近doinb在直播的时候聊到了现在战队的状态,表示现在的FPX根本不怕任何战队。在观众们表示FPX输给了IG,BLG和LNG的时候,doinb直接表示那个时候FPX的状态不太好,从RA输给RNG,我们不难看出事实真相上野差距大的战队难以取胜最近RA输给了RNG,甚至两场比赛都无力抗衡,轻松被RNG击败。这样的结果让很多人难以接受,尤其是RA的粉丝,他们从来没有想到RA居然这么不堪一击。但其实赛前就有人猜测RA打不过R国服第一迦南ZX,单排冲上国服第一,实力演绎迦南的真正美学说起永劫无间这款游戏,想必大家在最近都有所耳闻,作为一款结合吃鸡武侠两个模式的游戏,永劫无间也在刚上架就吸引了许多人的目光,并且随后几天便收获了非常多的玩家,可以说是网易旗下一款非前职业选手霸榜永劫无间修罗榜?国服第一迦南,击杀技术才是美学最近有一款端游火了,虽然公测的时间只有一个月左右,但是迅速引起了端游玩家们的好奇心,并且吸引了许多玩家,98块钱的账号,根本阻止不了广大玩家对这款游戏的热情,这款游戏就是永劫无间。永劫无间迦南成上分利器,多位大神用迦南上分,苟分英雄玩成刺客最近有一款武侠吃鸡的游戏火了,想必说到武侠吃鸡这个词,有许多小伙伴已经知道小编在说什么游戏了,没错就是永劫无间。这款游戏在公测一个月的时间里,迅速火了起来,原因很简单,就是他的题材