</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);
}
/**
* 添加用户
*
* @param user
* @return
*/
@PostMapping("save")
public Mono<User> save(@RequestBody User user) {
return repository.save(user);
}
/**
* 查询所有
*
* @return
*/
@GetMapping("/list")
public Flux<User> findAll() {
return repository.findAll();
}
/**
* 删除
*
* @param id
* @return
本次面试答案,以及收集到的大厂必问面试题分享:
* @return
*/
@GetMapping("/list")
public Flux<User> findAll() {
return repository.findAll();
}
/**
* 删除
*
* @param id
* @return
本次面试答案,以及收集到的大厂必问面试题分享:
[外链图片转存中…(img-IxJJXURX-1628417220040)]