首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用转换器将jOOQ记录转换为POJO

问使用转换器将jOOQ记录转换为POJO
EN

Stack Overflow用户
提问于 2018-10-26 09:04:26
回答 1查看 1.9K关注 0票数 1

在我的Oracle数据库中,我有存储为VARCHAR的金额值。当从数据库检索记录时,我希望将它们映射到一个POJO,在POJO中,金额值表示为double。不幸的是,我不能使用强制类型,因为在数据库中,所有的东西都存储为VARCHAR,而且没有任何模式将列标识为包含一个amount值的列。

我正在看一看jOOQ变换器,这似乎是我想要的。因此,我为此创建了一个jOOQ转换器:

代码语言:javascript
复制
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时,我希望触发这个转换器,然后每当我写回数据库时触发该转换器。请您推荐如何实现这一目标?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-26 11:02:21

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

record只包含String值,MyClass类将包含匹配的double属性。jOOQ将从String自动转换为double,反之亦然.默认情况下,将应用DefaultRecordMapper和DefaultRecordUnmapper。

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

正确地做这件事需要做一些工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53005181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档