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

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

180复古传奇176怀旧年卡版台上穆桂英台下林黛玉这就是女中豪杰不知道还有多少人还像小编这样记得住传奇这个游戏,现在网络很发达,很多网吧流行都是xx联盟等等,很少看到传奇可以在网吧玩了,不过已经都20多年了,这也都是正常的事,这个游戏里的职业还176复古高爆火龙复古版角色回收复古传奇高爆版既保留了经典传奇内容,又开创了很多新的玩法,还提高了刷怪的爆装率。复古高爆版又出了一项独特的系统角色回收系统。角色回收系统会把你角色的价值信息分析出来,包括装备宝石元1。85复古传奇手游还原经典,等你来战复古传奇多版本登录器是热血传奇的最初的版本,传承着热血传奇,既有原汁原味的传奇的地图怪物和武器装备,又有玩家追求的技术,从2003年盛大公司推出的传奇受到了广大玩家的喜爱,玩家追求三端互通嘟嘟传奇手游道士不同时期的宝宝有何区别喜欢的朋友可以关注我私信传奇,地址或者微信关注复古传奇三端互通有链接与礼包码虽然嘟嘟传奇只有简单的三种职业,但玩家依然乐此不疲的书写着属于自己的英雄篇章。相较于战士和法师这两个职业复古王者还原1。76玩法,爆率十倍全开!麻痹戒指等你来爆复古微变版本广告正式投放!每分钟就有几百人回归。他的火爆来源于产品的自身质量!完美的还原当年的端游!从根本解决了(好装备全靠花钱砸的问题),复古微变版从现在开始好装备全靠打!经典复那些高人气的外传动画,独立于正篇之外,却有着出乎意料的热度部分高人气的漫画作品都有独立于正篇故事之外的外传漫画,这些外传漫画与正篇故事相承接,大多讲述的是配角或轻松日常的故事,却有着出乎意料的人气。在岛国众多知名漫画作品的基础上,也有很多海绵宝宝如果蟹黄堡配方消失,比奇堡小镇将毁灭?海盗船长顺着古老藏宝图的指引,来到了人迹罕至的丛林里。他穿过重重机关,从皮包骨骷髅手里抢到了一本书。是的,海盗船长的目的并非是金银财宝,而是一本简单而有趣的故事书。书本打开,海盗船薄樱鬼推出新作OVA,有新角色出场,有生之年等到了漫画动画游戏小说四个领域相互交叉,由游戏改编成动画作品,是岛国动漫领域比较常见的一种动画改编方式。时隔多年,我们终于迎来了薄樱鬼全新OVA动画,官方预告片也已放出。薄樱鬼新动画分为什么是二次元脸?推主COS玛奇玛绫波丽,长相有点甜化妆技术高超到一定的境界,真的可以做到改头换面。尤其是网络上出现很多化妆大神,他们运用多种化妆工具,仿佛可以摇身一变变成另外一个人。当然,除了后天提升的化妆技术之外,先天的长相也需作者给高人气角色增加戏份or创作遵从自己的本心,你更在意哪种?每一位漫画家在创作漫画的始终,必然离不开读者们的陪伴和支持。正如漫画家离不开读者一样,而读者也离不开漫画所带来的快乐。漫画家在绘制漫画的过程中都会遇到这样一个问题当自己作品里一个配蓝翔学姐火了,穿肚兜开挖掘机,巴黎世家黑丝袜安排,网友爱了提起蓝翔技师学校,相信国内绝大多数的网友肯定都不陌生了,当时那句挖掘机技术哪家强,中国山东找蓝翔广告词可以说是火爆全国,而事实也证明蓝翔学校确实有这个实力,在经过这些年的发展之后,
WB电竞大赏,Cryin位居潜力选手第二名,Meiko暂居十大选手之首前言最近某平台举办了一个关于电竞大赏的活动,旨在选出观众喜爱的十大电竞选手俱乐部解说等。而在首日的投票活动中,LOL板块依旧是热度空前啊,初略看了下,各个类别的前三之中LOL板块至舍弃QG荣誉和Fly也能行!JXG决赛42淘汰火豹,刺痛离KPL只差一步刺痛是重庆QGhappy(现在重庆狼队,不过刺痛的荣耀都是重庆QGhappy时期获得的)的冠军射手,最近这几个赛季重庆狼队启用了妖刀舍弃了刺痛效果非常好,不是说刺痛不够优秀而是刺痛LPL名人堂即将再添新人,PDD已确定加入候选人名单LPL名人堂作为一个官方认可的神圣位置,是每一位联盟选手都想要达成的荣誉,而所有能够进入LPL名人堂的职业选手,暂且不提需要他本身有着过硬的游戏技术,更重要的是需要对LPL做出过杰生化奇兵4有新爆料传言背景或在南极州生化奇兵这个系列的游戏相信不少人都有玩过或者听说过。作为一款第一人称的的射击游戏,生化奇兵以其独特的艺术风格场景及人物设计还有故事剧情吸引了非常多玩家。这个系列在2013年推出了生腾讯游戏每年赚取达1100亿的净利,会引导网瘾少年们走向正途吗2021年腾讯云游戏用户规模已达3。73亿,腾讯每年赚取1100亿的净利润,会为那些因游戏er浪费青春,耽误学业而毁掉前程的青少年负责吗?英雄联盟,王者游戏,绝地求生会不会上瘾?算网友热议Bang退役世界第一ADC退场,Uzi复出原因找到了?这段时间恰逢转会期,众多俱乐部都在积极引援,为下赛季做准备,因此,众多现役明星选手自然会成为抢手货。但对于大龄选手来说就相对比较悲惨,不会成为各大战队不会优先考虑的对象,比如ico绝地求生PGC世界赛第三周排位,17战队两连鸡单局22淘汰破纪录2021PGC世界赛第三周排位赛概况由蓝洞举办的2021PGC全球挑战赛第三周排位赛于12月6日结束。在第二周未能晋级周决赛的队伍将通过排位赛,来确定周中赛补位资格的顺序。16支队热血传奇百区挨打王道士,左复活右护身,战士追打不掉血说到热血传奇中的道士,相信很多玩家第一反应是脆皮不耐打。再牛的道士,也怕战士的大刀,穿一身神装的道士只能站街,根本不敢接受战士的单挑战书。今天我们就来看看百区的一位奇葩道士,此人非做最大的牺牲,背最重的锅!Cryin正式离开RNG2021年LPL冬季转会期正在火热进行中,作为2021LPL上半年表现最出色的队伍,RNG在转会期的运作也是成为了不少LPL粉丝们关注的焦点。因为从2021赛季RNG的整体表现来看热血传奇传奇中的217琥珀项链事件,玩家被关黑房间!(上)哈喽,大家好,我是翡冷翠。今天翡冷翠来给大家说说传奇中的02年的琥珀事件!小伙伴们喜欢的话可以点赞关注哟。有喜欢玩传奇的小伙伴们,想跟作者一起玩的,可以私信翡冷翠(传奇)哦!琥珀项王者荣耀正式服7号更新,吕布玩家退出群聊,还有多位英雄调整Hello,大家好,这里是兔八哥聊游戏!关注我,为您带来不一样的游戏理解!在新的一周,王者荣耀还是没有放弃更新,在7号这天的更新里面,上线了几个微不足道的活动,同时有7位英雄的平衡