将 JDBI 与不支持准备语句的 JDBC 驱动程序一起使用

Using JDBI with a JDBC driver that does not support prepared statements

我正在尝试在 Presto/AWS Athena jdbc 驱动程序之上使用最新的 2.x 版本的 JDBI,该驱动程序不支持准备好的语句。

似乎应该有一个配置选项或类似选项允许您关闭准备语句的使用,特别是如果您只是传入 SQL 而没有要绑定的参数。但是,StatementBuilder 接口需要来自 create 方法的 PreparedStatement return 值。

有没有人 运行 对此感兴趣或对如何在这种情况下使用 JDBI 有一些建议?我在项目的其余部分中将它用于其他几个数据库,因此为了保持一致性,我更愿意保留它。

如果您必须将 JDBI 与不支持 PreparedStatement 的 JDBC 驱动程序一起使用,您有两个选择:

  1. JDBI 是开源的。修改源代码以满足您的需要。如果您以一种普遍有用的方式进行操作,您可能希望 post 返回更新,以便其他人可以从中受益,即成为 贡献者 .

  2. 假的。在来自 Presto/AWS Athena 的 JDBC 连接周围创建一个 JDBC 包装器,returns 一个伪造的 PreparedStatement,仅支持无参数 SQL 语句,即如果调用任何 setXxx 方法,则抛出 UnsupportedOperationException。然后将包装连接提供给 JDBI。

有 JDBC Presto 驱动程序支持 Teradata 免费提供的 Prepared Statements。您可以从他们的网站下载它。它应该适用于 Athena,但您必须尝试一下。