首页 > 数据库 >RxSqlUtils(base R2dbc)

RxSqlUtils(base R2dbc)

时间:2024-12-28 10:20:48浏览次数:3  
标签:name title R2dbc RxSqlUtils public base user class

一、前言

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

标签:name,title,R2dbc,RxSqlUtils,public,base,user,class
From: https://www.cnblogs.com/noear/p/18637224

相关文章

  • 4.基于 Couchbase 构建数据仓库的元数据管理方案
    在基于Couchbase构建数据仓库时,元数据管理至关重要,它能够帮助跟踪数据结构、数据源、ETL作业、分区、索引等信息。以下是几个关键步骤和实现思路:1.元数据的定义范围元数据在数仓中的主要用途包括:数据库和表的组织:包括bucket、scope、collection等的定义。数据模型......
  • 2.Couchbase 的增量查询优化
    在Couchbase中实现增量查询的优化是关键,尤其当数据量庞大时。通过合适的策略,可以显著提高增量查询的效率,确保系统在处理实时数据时的响应速度和性能。下面是一些针对Couchbase增量查询的优化策略。1.使用索引优化查询为了提升增量查询的性能,Couchbase提供了多种索......
  • Centos7下yum安装报错问题解决方法Cannot find a valid baseurl for repo: base/7/x86
    Cannotfindavalidbaseurlforrepo:base/7/x86_64 目录Cannotfindavalidbaseurlforrepo:base/7/x86_64 原因如下:1.网络问题2.错误的YUM源配置3.代理设置问题 原因如下:1.网络问题首先,检查系统的网络连接是否正常,可以通过以下命令测试:ping......
  • KingbaseES V8R6数据库运维案例之---sys_resetwal案例
    案例说明:如下图所示,KingbaseESR6数据库启动失败,通过sys_resetwal重建checkpoint启动数据库。适用版本:KingbaseESV8R6一、问题现象二、问题分析1、查看reset前的控制文件的信息[kingbase@node1bin]$./sys_controldata-D/data/kingbase/v8r6_021/datasys_controlve......
  • kingbase金仓数据库之对象访问权限的管理
    基础知识对象的分类数据库的表、索引、视图、缺省值、规则、触发器等等,都称为数据库对象,对象分为如下两类:模式(SCHEMA)对象:可以理解为一个存储目录,包含视图、索引、数据类型、函数和操作符等。非模式对象:其他的数据库对象,如数据库、表空间、用户。对象访问权限概述1......
  • NLP论文速读(AAAI 2024)|面向序列生成的基于高效采样强化学习 (Efficient Sampling-ba
    论文速读|ESRL:EfficientSampling-basedReinforcementLearning forSequenceGeneration论文信息:简介:   本文探讨了将强化学习(ReinforcementLearning,RL)应用于序列生成模型的背景。序列生成是一个长期决策问题,而RL特别适合优化长期奖励,例如序列级别的评分......
  • Spark数据存储到Hbase案例
    本案例读取数据库中数据存储到Hbase1、原始数据MySQL数据库2、Hbase建表启动Hadoop、Zookeeper、Hbase启动HbaseShell窗口,执行create'tb_region','cfgeo'3、编写代码packagecom.soft863.demoimportorg.apache.spark.sql.SparkSessionimportorg.apache.hadoop.......
  • Scrapy:settings对象核心类BaseSettings详解
    Settings概述文件路径:scrapy/settings/init.pyscrapy/settings/default_settings.pyscrapy/settings这个文件夹中有两个文件。在__init__.py文件中定义了scrapy中的设置对象的核心类。default_settings.py文件中定义了scrapy所有的默认配置,这个就是记录scrapy默认配置的......
  • 熟悉常用的HBase操作01
    (一)编程实现以下指定功能,并用Hadoop提供的HBaseShell命令完成相同任务:(1) 列出HBase所有的表的相关信息,例如表名;(2) 在终端打印出指定的表的所有记录数据;(3) 向已经创建好的表添加和删除指定的列族或列;(4) 清空指定的表的所有记录数据;(5) 统计表的行数。     ......
  • 熟悉常用的HBase操作02(问题)
    实验内容与完成情况:(一)编程实现以下指定功能,并用Hadoop提供的HBaseShell命令完成相同任务:  HBaseShell运行截图:(1) 列出HBase所有的表的相关信息,例如表名; (2) 在终端打印出指定的表的所有记录数据; (3) 向已经创建好的表添加和删除指定的列族或列; (4) 清空指定的表......