1
我試圖用jOOQ執行.fetchMap(鍵,值),但我想通過自定義轉換器來處理鍵。jOOQ .fetchMap()與轉換器
該文檔非常清楚如何使用轉換器以及如何使用.fetchMap(),但我找不到任何方法來結合兩者。
從我的jOOQ版本(3.9)中可以找不到此功能?
我試圖用jOOQ執行.fetchMap(鍵,值),但我想通過自定義轉換器來處理鍵。jOOQ .fetchMap()與轉換器
該文檔非常清楚如何使用轉換器以及如何使用.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);
現在,每當你取這個field
在SELECT
語句,例如而從獲取底層JDBC ResultSet
結果
Result<Record1<MyType>> result =
DSL.using(configuration)
.select(field)
.from(...)
.fetch();
jOOQ會自動套用您的轉換器。你永遠不會在結果中看到原始的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);
你可以提供一些線索什麼方法/在''領域被使用的功能(名稱(「MY_TABLE」,「MY_FIELD」),型)''?什麼是field()和name()? – awm
@awm:當然,我將隱含的靜態導入添加到答案中 –