在我的 Oracle 數據庫中,我有存儲為 VARCHAR 的金額值。從數據庫中檢索記錄時,我希望將它們映射到一個 POJO,其中金額值表示為雙精度值。不幸的是,我不能使用強制類型,因為在數據庫中所有內容都存儲為 VARCHAR,并且沒有模式將列標識為包含金額值的列。我正在查看jOOQ 轉換器,這似乎是我想要的。因此,我為此創建了一個 jOOQ 轉換器:public class DoubleConverter implements Converter<String, Double> { @Override public Double from(String stringValue) { return new Double(stringValue); } @Override public String to(Double doubleValue) { DecimalFormat df = new DecimalFormat(); df.setMinimumFractionDigits(0); df.setGroupingUsed(false); return df.format(doubleValue); } @Override public Class<String> fromType() { return String.class; } @Override public Class<Double> toType() { return Double.class; }}但是,每當我想將數據庫記錄映射到我的 POJO 時,我都想觸發這個轉換器record.into(MyClass.class),然后在我寫回數據庫時觸發回來。你建議如何實現這一目標?
1 回答

繁華開滿天機
TA貢獻1816條經驗 獲得超4個贊
雖然我強烈建議您以某種方式獲取所有雙列的列表并在您的代碼生成配置中應用強制類型配置,但在您的特定情況下,您不必做太多事情就可以調用record.into(MyClass.class).
您record將只包含String值,而您的MyClass類將包含匹配的double屬性。jOOQ 將自動轉換String為double,反之亦然。默認情況下,DefaultRecordMapper和DefaultRecordUnmapper將被應用。
您可以通過指定 newRecordMapperProvider和 a來覆蓋它們,RecordUnmapperProvider如下所示:https : //www.jooq.org/doc/latest/manual/sql-execution/fetching/pojos-with-recordmapper-provider
正確地做到這一點需要一些工作。
添加回答
舉報
0/150
提交
取消