JDBI3 SqlObject Consumer:如何修复"No Mapper Registered"错误?



我需要做些什么来修复"No Mapper注册"当试图流的结果集从一个SqlObject DAO?该方法用@RegisterBeanMapper注释,文档似乎不完整。

根据https://jdbi.org/#_consumer_arguments:

15.1.3。消费者参数

作为一种特殊情况,除了使用其他绑定实参之外,还可以使用Consumer实参。

除非类型T是Stream或Iterator,否则对结果集中的每一行执行一次消费者操作。参数T的静态类型决定行类型。

如果消费者实现了Consumer或Consumer,则消费者执行一次,迭代器或流保存结果。参数T的静态类型也决定了这里映射的行类型。当在迭代器或流中使用消费者参数时,jdbc将在回调完成后管理并关闭它们。

我在DAO接口中使用以下代码:


@SqlQuery(" SELECT id, title FROM " + TABLE_XML_RECORDS //
+ " WHERE" //
+ "  issuedate IS NULL" //
+ "  AND sort_date <= :issueweek" //
+ "  AND sort_date >= :oldest" //
+ "  AND sort_date IS NOT NULL" //
+ " ORDER BY sort_date DESC")
@RegisterBeanMapper(IdTitle.class)
void getRecordIdsFor(@Bind("issueweek") LocalDate issueweek, @Bind("oldest") LocalDate oldestSortDate, java.util.function.Consumer<Stream<IdTitle>> consumer);

但是我得到:


No mapper registered for type java.util.stream.Stream<clarivate.mariadb.models.IdTitle>

我试着搜索代码片段,但我的搜索foo是失败的,文档不包含一个简单的具体的例子。

通过更新到最新的3.x解决。这似乎是一个新添加的功能。

final JDBI = '3.35.0'
api "org.jdbi:jdbi3-core:${JDBI}"
api "org.jdbi:jdbi3-sqlobject:${JDBI}"
api "org.jdbi:jdbi3-stringtemplate4:${JDBI}"

相关内容

  • 没有找到相关文章

最新更新