我想将 jOOQ 与 Kotlin 协程一起使用,但我无法找到文档或示例代码来了解如何正确使用它。
我想选择与我的查询匹配的所有行并将它们映射到我的 POJO 中。
我尝试过多种组合。
fetchAsync
听起来正确,但映射后返回类型不正确
(Mutable)List<Model!>
的返回类型不正确
open suspend fun findAll(): Flow<Model> {
return ctx.select()
.from(table)
.fetchAsync()
.await()
.into(modelClass) // Into is blocking
}
如果我希望它被阻止,我可以使用:
return ctx.select()
.from(table)
.fetchInto(modelClass)
但是没有
fetchAsyncInto
方法。
另外,如果我想做一个存在查询,我可以看到它是如何通过阻塞来完成的,但不是异步的。
例如
ctx.fetchExists(dslContext.selectFrom(table).where(YOUR_TABLE.ID.eq(id))
如何使用 jOOQ 和 Kotlin 协程执行全选和存在查询?
从
jOOQ
3.17 开始,jooq-kotlin-coroutines
扩展模块允许在反应式流 API 和协程 API 之间进行桥接。
并且您必须向项目添加下一个依赖项
<dependency>
<groupId>org.jooq</groupId>
<artifactId>jooq-kotlin-coroutines</artifactId>
<version>version</version>
</dependency>
要了解更多详细信息,请查看 Kotlin 协程支持