将 Dropwizard JDBI 升级到 JDBI 3

Upgrading Dropwizard JDBI to JDBI 3

你如何将 dropwizard jdbi 2.78 升级到 jdbi 版本 3,因为我想使用其中包含的连接功能。

这里是项目成员。

我们将在 v3 最终版本发布之前发布更完整的迁移指南。与此同时,我们的一位用户刚刚提交了一份不错的更改列表作为起点:

(见https://github.com/jdbi/jdbi/issues/715

  • 重命名 classes(所以不像删除导入并让 IDE 修复它那么简单):

    • DBI -> Jdbi
    • IDBI -> Jdbi
    • DBIException -> JdbiException
  • Jdbi 的构造函数已替换为 create() 工厂方法。

  • ResultSetMapper 替换为 RowMapper,map 方法不再有行索引。 Jdbi 3 中存在一个名为 ResultSetMapper 的 class,但它有不同的用途。 @Mapper 替换为@UseRowMapper。 Jdbi 上的 registerMapper() 替换为 registerRowMapper()。

  • @BindIn 替换为@BindList,不再需要 StringTemplate。

  • 使用默认的 Jdbi 模板,尖括号不被引用,这意味着在您在工具 -> 数据库 -> 用户模式下配置参数模式后,IntelliJ 理解语法。

  • Query 不再具有默认类型的 Map,因此无法直接对其调用 list()。在调用 list() 之前调用 mapToMap()。

  • TransactionStatus 不再存在。

  • TransactionConsumer.useTransaction() 现在只需要一个 Handle,因此在 Jdbi 或 Handle 上使用 useTransaction() 方法时需要删除 TransactionStatus 参数。

  • TransactionCallback.inTransaction() 现在只需要一个 Handle,因此在 Jdbi 或 Handle 上使用 inTransaction() 方法时需要删除 TransactionStatus 参数。

  • CallbackFailedException 不再存在。各种功能接口,如 HandleConsumer、HandleCallback、TransactionalConsumer 和 TransactionalCallback,现在可以抛出任何异常类型(但限制使用泛型以避免不必要的检查异常处理)。

  • SQL 默认情况下不再提供对象支持。每个创建的Jdbi实例都必须注册它。

请参阅 Jdbi 3 开发人员指南中的 Dropwizard JDBI3 in the Dropwizard User Manual and Upgrading from v2 to v3