【发布时间】:2018-03-15 11:59:10
【问题描述】:
我可以使用 @MapResultAsBean 注释将 jdbi 查询的结果映射到我感兴趣的 bean,如下所示:
@SqlQuery("select * from some_table where id = :some_id")
@MapResultAsBean
SomeBean findById(@Bind("some_id") String someId);
如果应用程序中使用的jdbi 实例尚未向任何自定义映射器注册,则此方法可以正常工作。
但我正在处理的应用程序有一个自定义映射器,如下所示:
class CustomMapperFactory implements ResultSetMapperFactory {
// Override methods to provide custom conversion logic
}
此映射器在应用程序启动时注册到jdbi 实例,如下所示:
final DBIFactory factory = new DBIFactory();
final DBI jdbi = factory.build(environment, conf.getDatabase(), "postgresql");
jdbi.registerMapper(new CustomMapperFactory());
CustomMapperFactory 覆盖方法并提供将任何类型的结果从数据库转换为相关 bean 类型的逻辑。正是这个超级转换器负责整个应用程序中所有 DB 到 POJO 的转换。
我的问题是:
有没有办法让jdbi 继续使用CustomMapperFactory 将结果从数据库转换为除SomeBean 类型之外的所有类型的bean。
我尝试添加@MapResultAsBean,而CustomMapperFactory 仍向jdbi 注册。程序运行,但注册到jdbi 的自定义映射器优先,@MapResultAsBean 完全没有效果,只是被忽略了。
在互联网上找不到太多关于它的信息。有什么帮助吗?我们使用dropwizard-jdbi-1.2.2 显然是postgres 数据库。
【问题讨论】:
标签: java postgresql orm dropwizard jdbi