当前位置: 首页 > 知识库问答 >
问题:

JDBI:将@MapResultasBean注释与CustomMapperFactory一起使用

韩鸿波
2023-03-14

我可以使用@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类型。正是这个uber转换器负责整个应用程序中所有DB到POJO的转换。

我的问题是:有没有一种方法可以告诉JDBI继续使用这个CustomMapperFactory将结果从数据库转换为所有类型的bean(类型SomeBean除外)。

在网上找不到很多关于它的资料。有人帮忙吗?我们使用dropwizard-jdbi-1.2.2和明显的postgres数据库。

共有1个答案

阴禄
2023-03-14
public class CustomResultMapperFactory implements ResultSetMapperFactory {

    @Override
    public boolean accepts(Class type, StatementContext ctx) {
        if (type == SomeBean.class) {
            return false;
        }
        //....
    }
}
public class CustomResultMapperFactory implements ResultSetMapperFactory {

    @Override
    public ResultSetMapper mapperFor(Class type, StatementContext ctx) {
        if (type == SomeBean.class) {
            return new BeanMapper(type);
        }
        // ..
    }
}

注意,在这种情况下,您不需要具有@mapresultasbean注释。

 类似资料:
  • 我使用AWS加密客户端。下面的代码抛出错误为 错误:@DoNotTouch不适用于现场 然而,如果我给出@DoNotTouch配置,如下所示[使用getter和setter] 这很好用。我猜lombok生成的getter和setter不会被AmazoneCryptionClient识别 我在跟踪这个aws doc:https://aws.amazon.com/blogs/developer/cli

  • 我在我的应用程序中使用带有陶土的ehcache。当我使用带有陶土的ehcache时,我的响应时间增加了700倍。我认为陶土需要时间来测量物体的大小,因为它给了我警告: net.sf.ehcache.pool.sizeof。ObjectGraphWalker checkMaxDepth警告:在尝试计算对象图的大小时,已达到1000个对象引用的配置限制。如果继续调整大小操作,可能会出现严重的性能下降。

  • 是否可以通过注释在Spring Cloud Circuit Breaker上使用Resilience4j?我找不到任何关于它的留档,只有关于通过代码使用弹性4j的示例

  • 问题内容: 我有一个使用自动装配的3个不同类的A类 在测试它们时,我只希望将其中两个类(B&C)作为模拟,并让D类在正常运行时可以自动装配,但此代码对我不起作用: 甚至有可能这样做吗? 问题答案: 应该是这样的 如果您不想成为别人,则无需在课堂上做任何事情。您 应具有的正确实例。此外,我认为你需要使用的工作,用正确的设定。因为您没有使用,所以需要使用 MockitoAnnotations.init

  • 问题内容: IE8发布后,以下代码是否可以添加条件样式表? 我已经阅读了有关此功能是否适用于Beta的矛盾报告。我希望有人可以分享他们的经验。谢谢。 问题答案: 它对我有用-无论是在怪癖模式下还是在标准合规性模式下。但是,它并 没有 切换到IE8兼容模式下工作。

  • 问题内容: 如何使用hibernate注释来验证枚举成员字段?以下内容不起作用: 问题答案: 请注意,您还可以创建一个验证器来检查String是否为枚举的一部分。 这很好,因为您不会丢失“错误值”的信息。您会收到类似的消息 值“ someBadUserType”不是有效的用户类型。有效的UserType值为:PERSON,COMPANY 编辑 对于那些想要非番石榴版本的人,它应该可以使用类似以下的