Ped*_*ges 2 java dictionary converters jooq
我正在尝试使用 jOOQ 执行 .fetchMap(key, value) 但我想通过自定义转换器处理密钥。
文档非常清楚如何使用转换器以及如何使用 .fetchMap() 但我在任何地方都找不到将两者结合起来的方法。
我的 jOOQ 版本 (3.9) 是否缺少此功能?
Converter( 和Binding) 实现绑定到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);
Run Code Online (Sandbox Code Playgroud)
现在,每当您field在SELECT语句中获取此内容时,例如
Result<Record1<MyType>> result =
DSL.using(configuration)
.select(field)
.from(...)
.fetch();
Run Code Online (Sandbox Code Playgroud)
jOOQ 将在从底层 JDBC 获取结果时自动应用您的转换器ResultSet。String您永远不会在结果中看到原始值。
您提到的方法ResultQuery.fetchMap(Field, Field)只是fetch()and then的缩写Result.intoMap(Field, Field)。换句话说,当您调用fetchMap()或时,转换器已经被自动应用intoMap(),因此无需执行任何特定操作。只需使用您的字段作为参数即可fetchMap():
Map<MyType, OtherType> result =
DSL.using(configuration)
.select(field, otherField)
.from(...)
.fetchMap(field, otherField);
Run Code Online (Sandbox Code Playgroud)