一、前言

随着 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 `user`  (
`id` bigint(20) not null,
`name` varchar(255) DEFAULT NULL,
`title` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
);

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<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 可以完成数据库的响应式操作,也有更好的透明性,使用简单和直接。

RxSqlUtils(base R2dbc)的更多相关文章

  1. 封装常用的js(Base.js)——【01】理解库,获取节点,连缀,

    封装常用的js(Base.js)——[01]理解库,获取节点,连缀,  youjobit07 2014-10-10 15:32:59 前言:       现如今有太多优秀的开源javascript库, ...

  2. javascript重置(base层)(。。。。不完整)

    1.nextSibling浏览器兼容问题 <ul> <li id="item1"></li> <li id="item2&quo ...

  3. 继承与构造函数(base关键字)

    1.背景 我:虽然通过继承减少了代码冗余,但是,每一个子类的构造函数还是需要给所有属性赋值的,很麻烦的. 师:这个好办,用base就行啦. 我:贝司?还吉他呢! 师:别急,首先我们先介绍下实例化子类对 ...

  4. TensorFlow windows 安装(base anaconda)

    Python conda安装之后(19年默认是python3.7) 1.降级到python3.6 2.查看python版本 3.安装tensorflow

  5. Ubuntu编译Protobuf(Base tensorflow-12)报错

    报错1: dogepool@ubuntu-server:~/dogecoin$ ./autogen.sh./autogen.sh: 50: ./autogen.sh: autoreconf: not ...

  6. Java 编程入门(词汇表)

    抽象类(abstract class):抽象类不能创建对象,主要用来创建子类.Java中的抽象类使用 abstract 修饰符定义. 抽象数据类型(abstract data type ADT):抽象 ...

  7. CPU与内存(经典问答)

    原文:http://www.cnblogs.com/xkfz007/archive/2012/10/08/2715163.html 下面是网上看到的一些关于内存和CPU方面的一些很不错的文章. 整理如 ...

  8. Flink资料(1)-- Flink基础概念(Basic Concept)

    Flink基础概念 本文描述Flink的基础概念,翻译自https://ci.apache.org/projects/flink/flink-docs-release-1.0/concepts/con ...

  9. centos7安装docker并安装jdk和tomcat(常用命令)

    阿里专属的镜像加速 在宿主机器编辑文件:vi /etc/docker/daemon.json 阿里专属的镜像加速地址,类似于"https://91cntlkt.mirror.aliyuncs ...

  10. Java编程入门(词汇表)

    抽象类(abstract class):抽象类不能创建对象,主要用来创建子类.Java中的抽象类使用 abstract 修饰符定义. 抽象数据类型(abstract data type ADT):抽象 ...

随机推荐

  1. FFmpeg开发笔记(五十六)使用Media3的Exoplayer播放网络视频

    ​Android早期的MediaPlayer控件对于网络视频的兼容性很差,所以后来单独推出了Exoplayer库增强支持网络视频,在<Android Studio开发实战:从零基础到App上线( ...

  2. 使用svn保存markdown文档

    使用svn管理md文档时,使用谷歌直接访问出现中文乱码,解析格式错误的问题,可以通过安装谷歌浏览器的插件解决. 一.解决格式解析错误的问题 安装插件 Markdown Preview Plus ,安装 ...

  3. 在 Kubernetes 中基于 StatefulSet 部署 MySQL(下)

    大家好,我是老 Z! 上篇文章实现了 MySQL 数据库在基于 KubeSphere 部署的 K8s 集群上的安装部署,部署方式采用了图形化界面这种形式.本文将会介绍如何使用 GitOps 来部署 M ...

  4. Spring实现MySQL事务操作

    一.创建数据库表 表名:account 字段:(`id`,`username`,`money`) 二.dao.service层创建业务接口.类 1 public interface UserDao { ...

  5. 分支定界方法(branch and cut,branch and price的基础)

    分支定界方法(branch and cut,branch and price的基础) 目录 1.基础版的分支定界算法(假设是min问题) 2.分支定界算法的步骤及其注意事项 2.1 具体的分支定界方法 ...

  6. react+eslint+prettier 项目配置

    项目地址 https://gitee.com/zhudachangs/react-eslint-prettierrc-demo 项目地址gitee 项目配置eslint(验证) + prettierr ...

  7. C221027B

    B 抽 \(n\) 次卡, 连续 \(i\) 次没有抽中时, 第 \(i+1\) 次抽中的概率是 \(p_i\), 规定\(p_k=1\), 求期望抽中次数. 标签:矩阵加速递推, 动态规划. 暴力: ...

  8. frida 连接夜神模拟器

    adb connect 127.0.0.1:62001 adb devices adb forward tcp:27042 tcp:27042 adb forward tcp:27043 tcp:27 ...

  9. Python 潮流周刊#77:Python 依赖管理就像垃圾场火灾?(摘要)

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  10. 话说ReferenceQueue

    也是几年前写的,在内部邮件列表里发过,在这里保存一下. 看到了这篇帖子: <WeakHashMap的神话>http://www.javaeye.com/topic/587995 因为Jav ...