网站首页 > 教程文章 正文
一、前言
随着 Solon 3.0 和 Solon-Rx 3.0 发布,又迎来了的 RxSqlUtils 扩展插件,用于“响应式”操作数据库。RxSqlUtils 是基于 R2dbc 和 Reactor 接口的封装。极简风格,就像个工具类,故名:RxSqlUtils。
尤其在 solon-web-rx 和 Solon Cloud Gateway(基于纯响应式构建) 场景开发时,RxSqlUtils 会是最好的良配。
二、RxSqlUtils 使用
1、引入依赖
org.noear
solon-data-rx-sqlutils
2、新建数据库表(for MySql)
CREATE TABLE `user` (
`id` bigint(20) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;
3、定义实体类
使用了 lombok 的注解。
@Data
public class User {
private Long id;
private String name;
private String title;
}
4、添加数据源配置
solon.dataSources:
user!: # ‘!’结尾表示默认数据源
class: "org.noear.solon.data.datasource.R2dbcConnectionFactory"
r2dbcUrl: "r2dbc:h2:mem:///test;DB_CLOSE_ON_EXIT=FALSE;MODE=MYSQL;DATABASE_TO_LOWER=TRUE;IGNORECASE=TRUE;CASE_INSENSITIVE_IDENTIFIERS=TRUE"
5、注入 RxSqlUtils 并使用
注入(这样就可以用了)
@Component
public class UserDao {
@Inject
private RxSqlUtils sqlUtils;
}
查询操作
public Flux getAllUsers() {
return sqlUtils.sql("select * from user")
.queryRowList(User.class);
}
新增操作
public Mono addUser(User user) {
return sqlUtils.sql("INSERT INTO user (name , title) VALUES (?,?)", user.getName(), user.getTitle())
.updateReturnKey(Long.class);
}
更新操作
public Mono updateUser(User user) {
return sqlUtils.sql("UPDATE user SET name=?, title=? WHERE id=?", user.getName(), user.getTitle(), user.getId())
.update();
}
总结
使用 RxSqlUtils 可以完成数据库的响应式操作,也有更好的透明性,使用简单和直接。
猜你喜欢
- 2025-03-14 CAS单点登录(第7版)6.认证(cas单点退出)
- 2025-03-14 Dockerfile构建mysql8.0.27数据库
- 2025-03-14 Docker篇(五):容器之间该如何通讯?
- 2025-03-14 MySql高可用集群MySQL Router负载均衡读写分离
- 2025-03-14 MySQL MGR集群原理及实践(mysql集群架构)
- 2025-03-14 「原创」基于CentOS环境下,LNMP+REDIS+YAF+Java环境搭建
- 2025-03-14 MySQL系列-源码编译安装(v8.0.25)
- 2025-03-14 MySQL海量数据优化(理论+实战)(mysql数据库优化方案)
- 2025-03-14 《基于Docker的MySQL主从复制:快速搭建高可用从库》
- 2025-03-14 MySQL数据实时增量同步到Elasticsearch
- 05-11阿里开源MySQL中间件Canal快速入门
- 05-11MyBatis插件开发实战:手写一个分页插件
- 05-11Flask数据库——SQLAlchemy
- 05-11MySQL 到 Hazelcast Cloud 实时数据同步实操分享
- 05-11sqlmap 详解
- 05-11一篇文章让你学会Elasticsearch中的查询
- 05-11Mysql性能优化这5点你知道吗?简单却容易被初学者忽略!
- 05-11Spring Boot 实现 MySQL 读写分离技术
- 最近发表
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- md5 sha1 (32)
- mybatis plus page (35)
- semaphore 使用详解 (32)
- update from 语句 (32)
- vue @scroll (38)
- 堆栈区别 (33)
- 在线子域名爆破 (32)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)