慕標(biāo)琳琳
2021-12-10 10:03:47
在我的 Oracle 數(shù)據(jù)庫(kù)中,我有存儲(chǔ)為 VARCHAR 的金額值。從數(shù)據(jù)庫(kù)中檢索記錄時(shí),我希望將它們映射到一個(gè) POJO,其中金額值表示為雙精度值。不幸的是,我不能使用強(qiáng)制類型,因?yàn)樵跀?shù)據(jù)庫(kù)中所有內(nèi)容都存儲(chǔ)為 VARCHAR,并且沒(méi)有模式將列標(biāo)識(shí)為包含金額值的列。我正在查看jOOQ 轉(zhuǎn)換器,這似乎是我想要的。因此,我為此創(chuàng)建了一個(gè) jOOQ 轉(zhuǎn)換器: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; }}但是,每當(dāng)我想將數(shù)據(jù)庫(kù)記錄映射到我的 POJO 時(shí),我都想觸發(fā)這個(gè)轉(zhuǎn)換器record.into(MyClass.class),然后在我寫(xiě)回?cái)?shù)據(jù)庫(kù)時(shí)觸發(fā)回來(lái)。你建議如何實(shí)現(xiàn)這一目標(biāo)?
1 回答

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