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的博客
欢迎关注我的公众号:「程序那些事」最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!
最后更新于
这有帮助吗?