gpt4 book ai didi

java - 使用转换器将 jOOQ 记录转换为 POJO

转载 作者:行者123 更新时间:2023-11-30 05:56:56 25 4
gpt4 key购买 nike

在我的 Oracle 数据库中,我有存储为 VARCHAR 的金额值。从数据库检索记录时,我希望将它们映射到 POJO,其中金额值表示为 double 。不幸的是,我无法使用强制类型,因为在数据库中所有内容都存储为 VARCHAR,并且没有模式将列标识为包含金额值的列。

我正在看jOOQ converters这似乎就是我想要的。因此,我为此创建了一个 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;
}

}

但是,每当我想使用 record.into(MyClass.class) 将数据库记录映射到我的 POJO 时,我想触发此转换器,然后在写回数据库时触发。 。您建议如何实现这一目标?

最佳答案

虽然我强烈建议您以某种方式获取所有双列的列表,并在代码生成配置中应用强制类型配置,但在您的特定情况下,您不必做太多事情就能够调用 record.into(MyClass.class).

您的record将仅包含String值,而您的MyClass类将包含匹配的double属性。 jOOQ 会自动从 String 转换为 double,反之亦然。默认情况下,DefaultRecordMapperDefaultRecordUnmapper将被应用。

您可以通过指定新的 RecordMapperProviderRecordUnmapperProvider 来覆盖这些内容,如下所述: https://www.jooq.org/doc/latest/manual/sql-execution/fetching/pojos-with-recordmapper-provider

正确地做到这一点需要一些工作。

关于java - 使用转换器将 jOOQ 记录转换为 POJO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53005181/

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