gpt4 book ai didi

java - 带有转换器的 jOOQ .fetchMap()

转载 作者:行者123 更新时间:2023-11-29 04:32:09 24 4
gpt4 key购买 nike

我正在尝试使用 jOOQ 执行 .fetchMap(key, value) 但我想通过自定义转换器处理 key 。

关于如何使用转换器和如何使用 .fetchMap() 的文档非常清楚,但我无法在任何地方找到结合两者的方法。

我的 jOOQ 版本 (3.9) 会缺少此功能吗?

最佳答案

Converter (和 Binding )实现绑定(bind)到 Field由代码生成器引用,或者您可以像这样手动执行:

// Using this static import
import static org.jooq.impl.DSL.*;

// Assuming a VARCHAR column in the database:
DataType<MyType> type = SQLDataType.VARCHAR.asConvertedDataType(
new MyConverter<String, MyType>());
Field<MyType> field = field(name("MY_TABLE", "MY_FIELD"), type);

现在,每当您在 SELECT 语句中获取此字段时,例如

Result<Record1<MyType>> result =
DSL.using(configuration)
.select(field)
.from(...)
.fetch();

jOOQ 将在从底层 JDBC ResultSet 获取结果时自动应用您的转换器。您永远不会在结果中看到原始的 String 值。

ResultQuery.fetchMap(Field, Field)您提到的方法只是 fetch() 的缩写,然后是 Result.intoMap(Field, Field) .换句话说,当您调用 fetchMap()intoMap() 时,转换器已经自动应用,因此无需执行任何特定操作。只需将您的字段用作 fetchMap() 的参数:

Map<MyType, OtherType> result =
DSL.using(configuration)
.select(field, otherField)
.from(...)
.fetchMap(field, otherField);

关于java - 带有转换器的 jOOQ .fetchMap(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43395929/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com