You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从新版Vert.x的io.vertx.sqlclient.SqlConnection获取底层java.sql.Connection

新版Vert.x JDBC sql-client获取底层java.sql.Connection解决方案

核心思路

新版io.vertx.sqlclient.SqlConnection是Vert.x统一的异步数据库客户端接口,同时支持JDBC适配和原生异步数据库驱动(如PG、MySQL异步客户端),因此移除了通用接口上的unwrap方法。JDBC场景下返回的SqlConnection实际是io.vertx.jdbcclient.JDBCConnection接口的实现类,该专属接口仍保留了获取底层JDBC连接的能力。

实现步骤

  1. 确认项目引入了vertx-jdbc-client依赖,非JDBC实现的异步数据库客户端无法获取java.sql.Connection实例。
  2. 对获取到的SqlConnection实例做类型判断和转换,转为JDBCConnection后调用unwrap方法即可拿到底层连接。

代码示例

import io.vertx.jdbcclient.JDBCConnection;
import io.vertx.sqlclient.SqlConnection;

// 已通过连接池或事务获取到SqlConnection实例sqlConnection
if (sqlConnection instanceof JDBCConnection) {
    JDBCConnection jdbcConn = (JDBCConnection) sqlConnection;
    java.sql.Connection underlyingJdbcConn = jdbcConn.unwrap();
    // 此处执行基于原生JDBC API的操作
}

注意事项

  • 不要手动关闭获取到的底层java.sql.Connection,连接生命周期由Vert.x连接池统一管理,手动关闭会导致连接池状态异常。
  • 对底层JDBC连接的操作属于阻塞操作,请勿在Vert.x EventLoop线程中执行长耗时操作,建议将阻塞逻辑提交到Vert.x工作线程池运行。
  • 常规CRUD操作优先使用Vert.x SqlClient提供的异步API,仅在必须依赖原生JDBC能力的特殊场景下使用该方案,避免破坏异步编程模型。

内容的提问来源于stack exchange,提问作者Vishnu Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 11:54:03