欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 高考 > RxSqlUtils(base R2dbc)

RxSqlUtils(base R2dbc)

2025/4/29 15:47:25 来源:https://blog.csdn.net/cwzb/article/details/144758690  浏览:    关键词:RxSqlUtils(base R2dbc)

一、前言

随着 Solon 3.0 和 Solon-Rx 3.0 发布,又迎来了的 RxSqlUtils 扩展插件,用于“响应式”操作数据库。RxSqlUtils 是基于 R2dbc 和 Reactor 接口的封装。极简风格,就像个工具类,故名:RxSqlUtils。

尤其在 solon-web-rx 和 Solon Cloud Gateway(基于纯响应式构建) 场景开发时,RxSqlUtils 会是最好的良配。

二、RxSqlUtils 使用

1、引入依赖
<dependency><groupId>org.noear</groupId><artifactId>solon-data-rx-sqlutils</artifactId>
</dependency>
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 {@Injectprivate RxSqlUtils sqlUtils;
}

查询操作

public Flux<User> getAllUsers() {return sqlUtils.sql("select * from user").queryRowList(User.class);
}

新增操作

public Mono<Long> addUser(User user) {return sqlUtils.sql("INSERT INTO user (name , title) VALUES (?,?)", user.getName(), user.getTitle()).updateReturnKey(Long.class);
}

更新操作

public Mono<Long> updateUser(User user) {return sqlUtils.sql("UPDATE user SET name=?, title=? WHERE id=?", user.getName(), user.getTitle(), user.getId()).update();
}

总结

使用 RxSqlUtils 可以完成数据库的响应式操作,也有更好的透明性,使用简单和直接。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词