03-r2dbc-mysql-in-depth

3. 深入理解r2dbc-mysql

简介

mysql应该是我们在日常工作中使用到的一个非常普遍的数据库,虽然mysql现在是oracle公司的,但是它是开源的,市场占有率还是非常高的。

今天我们将会介绍r2dbc在mysql中的使用。

r2dbc-mysql的maven依赖

要想使用r2dbc-mysql,我们需要添加如下的maven依赖:

<dependency>
    <groupId>dev.miku</groupId>
    <artifactId>r2dbc-mysql</artifactId>
    <version>0.8.2.RELEASE</version>
</dependency>

当然,如果你想使用snapshot版本的话,可以这样:

<dependency>
    <groupId>dev.miku</groupId>
    <artifactId>r2dbc-mysql</artifactId>
    <version>${r2dbc-mysql.version}.BUILD-SNAPSHOT</version>
</dependency>

<repository>
    <id>sonatype-snapshots</id>
    <name>SonaType Snapshots</name>
    <url>https://oss.sonatype.org/content/repositories/snapshots</url>
    <snapshots>
        <enabled>true</enabled>
    </snapshots>
</repository>

创建connectionFactory

创建connectionFactory的代码实际上使用的r2dbc的标准接口,所以和之前讲到的h2的创建代码基本上是一样的:

不同的是ConnectionFactories传入的参数不同。

我们也支持unix domain socket的格式:

同样的,我们也支持从ConnectionFactoryOptions中创建ConnectionFactory:

或者下面的unix domain socket格式:

使用MySqlConnectionFactory创建connection

上面的例子中,我们使用的是通用的r2dbc api来创建connection,同样的,我们也可以使用特有的MySqlConnectionFactory来创建connection:

或者下面的unix domain socket方式:

执行statement

首先看一个简单的不带参数的statement:

然后看一个带参数的statement:

注意,如果参数是null的话,可以使用bindNull来进行null值的绑定。

接下来我们看一个批量执行的操作:

执行事务

我们看一个执行事务的例子:

使用线程池

为了提升数据库的执行效率,减少建立连接的开销,一般数据库连接都会有连接池的概念,同样的r2dbc也有一个叫做r2dbc-pool的连接池。

r2dbc-pool的依赖:

如果你想使用snapshot版本,也可以这样指定:

看一下怎么指定数据库连接池:

可以看到,我们只需要在连接URL上面添加pool这个driver即可。

同样的,我们也可以通过ConnectionFactoryOptions来创建:

最后, 你也可以直接通过创建ConnectionPoolConfiguration来使用线程池:

本文作者:flydean程序那些事

本文链接:www.flydean.com

本文来源:flydean的博客

欢迎关注我的公众号:「程序那些事」最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!

最后更新于

这有帮助吗?