<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- r2dbc spring data-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-r2dbc</artifactId>
</dependency>
<!-- r2dbc mysql 库-->
<dependency>
<groupId>dev.miku</groupId>
<artifactId>r2dbc-mysql</artifactId>
<version>0.8.2.RELEASE</version>
</dependency>
<!-- r2dbc-pool -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-r2dbc</artifactId>
<version>2.3.0.RELEASE</version>
</dependency>
<!-- webFlux -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
application配置文件
### r2dbc
spring:
r2dbc:
url: r2dbc:mysql://localhost/r2dbc?useUnicode=true&characterEncoding=UTF-8
username: root
password: root
pool:
enabled: true
max-size: 10
initial-size: 10
validation-query: select 1
表结构
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`age` int(11) NULL DEFAULT NULL,
`email` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`phone_number` int(11) NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, 'admin', 12, '123@163.com', 145448546);
INSERT INTO `user` VALUES (2, 'tom', 18, 'tom@163.com', 12346789);
INSERT INTO `user` VALUES (5, 'jerry', 25, 'jerry@163.com', 154646126);
SET FOREIGN_KEY_CHECKS = 1;
实体类
/**
* @author ZhaoJiu
* @since: 2021/7/22
* @desc: 用户实体类
*/
@Table("user")
@Data
public class User {
@Id
private String id;
private String name;
private Integer age;
private String email;
private Integer phoneNumber;
}
JPA中的Repository
/**
* @author ZhaoJiu
* @since: 2021/7/22
* @desc:
*/
public interface PersonRepository extends R2dbcRepository<User,String> {
}
最终代码
/**
* @author ZhaoJiu
* @since: 2021/7/22
* @desc: r2dbc 操作mysql CRUD
*/
@RestController
@RequestMapping("user")
public class UserController {
@Resource
PersonRepository repository;
/**
* 修改用户
*
* @param user
* @return
*/
@PutMapping("/update")
public Mono<ResponseEntity<String>> update(@RequestBody User user) {
return repository.findById(user.getId())
.flatMap(u -> repository.save(user)
.then(
Mono.just(new ResponseEntity<>("修改成功", HttpStatus.OK))
))
.defaultIfEmpty(new ResponseEntity<>("用户未找到", HttpStatus.NOT_FOUND));
}
/**
* 根据id查询
*
* @param id 用户id
* @return Mono
*/
@GetMapping("{id}")
public Mono<User> findById(@PathVariable String id) {
return repository.findById(id);
# **Java高频面试专题合集解析:**
![阿里Java岗面试百题:Spring 缓存 JVM 微服务 数据库 RabbitMQ等](https://img-blog.csdnimg.cn/img_convert/622f5c57cda58627218db5aab7059d42.png)
当然在这还有更多整理总结的Java进阶学习笔记和面试题未展示,在这也是免费分享给那些有需要的朋友,其中囊括了**Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构资料和完整的Java架构学习进阶导图!**
**这些资料都以整理成了PDF文档,如果有需要可以[狂戳这里免费下载](https://gitee.com/vip204888/java-p7)即可!**
![阿里Java岗面试百题:Spring 缓存 JVM 微服务 数据库 RabbitMQ等](https://img-blog.csdnimg.cn/img_convert/00b17269e8c4a31507b4ef7b54e2f2f7.png)
**更多Java架构进阶资料展示**
![阿里Java岗面试百题:Spring 缓存 JVM 微服务 数据库 RabbitMQ等](https://img-blog.csdnimg.cn/img_convert/17e3b6d9ebdf53818f7a22417ea27391.png)
![阿里Java岗面试百题:Spring 缓存 JVM 微服务 数据库 RabbitMQ等](https://img-blog.csdnimg.cn/img_convert/b475b62fd215abeb349563996312e253.png)
dis、Netty、zookeeper、Spring cloud、分布式、高并发等架构资料和完整的Java架构学习进阶导图!**
**这些资料都以整理成了PDF文档,如果有需要可以[狂戳这里免费下载](https://gitee.com/vip204888/java-p7)即可!**
[外链图片转存中...(img-kGXtaGqa-1628067027516)]
**更多Java架构进阶资料展示**
[外链图片转存中...(img-iPLcotMZ-1628067027518)]
[外链图片转存中...(img-CVzSnGb0-1628067027520)]
![阿里Java岗面试百题:Spring 缓存 JVM 微服务 数据库 RabbitMQ等](https://img-blog.csdnimg.cn/img_convert/19acd31c6a08f52c746af8e16641d2de.png)