blog2024年12月28日· 约 4 分钟
'RxSqlUtils(base R2dbc)'
RxSqlUtils(base R2dbc)
RxSqlUtils 是基于 R2dbc 和 Reactor 接口的封装。极简风格,就像个工具类,故名:RxSqlUtils。
一、前言#
随着 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 H2)
CREATE TABLE class="hljs-string">`user` (
class="hljs-string">`id` bigint(class="hljs-number">20) not null,
class="hljs-string">`name` varchar(class="hljs-number">255) DEFAULT NULL,
class="hljs-string">`title` varchar(class="hljs-number">255) DEFAULT NULL,
PRIMARY KEY (class="hljs-string">`id`)
);3、定义实体类
使用了 lombok 的注解。
@Data
public class User {
private Long id;
private String name;
private String title;
}4、添加数据源配置
solon.dataSources:
user!: class=class="hljs-string">"hljs-comment"># ‘!’结尾表示默认数据源
class: class="hljs-string">"org.noear.solon.data.datasource.R2dbcConnectionFactory"
r2dbcUrl: class="hljs-string">"r2dbc:h2:mem:class="hljs-commentclass="hljs-string">">///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<User> getAllUsers() {
return sqlUtils.sql(class="hljs-string">"select * from user")
.queryRowList(User.class);
}新增操作
public Mono<Long> addUser(User user) {
return sqlUtils.sql(class="hljs-string">"INSERT INTO user (name , title) VALUES (?,?)", user.getName(), user.getTitle())
.updateReturnKey(Long.class);
}更新操作
public Mono<Long> updateUser(User user) {
return sqlUtils.sql(class="hljs-string">"UPDATE user SET name=?, title=? WHERE id=?", user.getName(), user.getTitle(), user.getId())
.update();
}总结#
使用 RxSqlUtils 可以完成数据库的响应式操作,也有更好的透明性,使用简单和直接。
相关文章
评论