当前位置: 首页 > 知识库问答 >
问题:

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

钱均
2023-03-14

在我的Oracle数据库中,我有存储为VARCHAR的数量值。从数据库中检索记录时,我希望将它们映射到一个POJO,其中金额值表示为double。不幸的是,我不能使用强制类型,因为在数据库中,所有内容都存储为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;
    }

}

然而,每当我想使用record.into(MyClass.class)将数据库记录映射到我的POJO时,我就想触发这个转换器,然后每当我回写数据库时,就触发它。你建议如何实现这一点?

共有1个答案

鲍永春
2023-03-14

虽然我强烈建议您以某种方式获得所有双列的列表,并在代码生成配置中应用强制类型配置,但在您的特定情况下,您不需要做太多工作就可以将记录调用到(MyClass.class)中。

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

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

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

 类似资料:
  • 正如在这里被问及的,这个#58538732的后续问题 根据Lukas Eder的建议,我编写了一个,将转换为 现在看起来如下所示 出现以下错误消息: 线程“main”java.lang中出现异常。错误:未解决的编译问题: 无法访问QueryFeaturesTask类型的封闭实例。必须使用QueryFeaturesTask类型的封闭实例限定分配(例如,x.new A(),其中x是QueryFeatu

  • 我已经看到,当我们使用或时,JOOQ可以自动返回POJO 但是有可能将复杂查询的结果转换成多个POJO吗? 我测试了方法,它工作得很好。但我没有支持对象。

  • 我想使用PHP将大量MySQL数据转换为JSON。我有20K及以上的记录,但我无法将MySQL数据转换为JSON。我想创建RESTAPI,所以需要以JSON格式发送(响应)数据。 我试过这个,但没有得到输出: 代码:

  • 我正试图在Jooq的帮助下实现一个软件,将数据读写到h2数据库中。我的PLC_数据表有一个带有时间戳的列,该列通常映射到LocalDateTime,但我需要将该数据映射到POJO中的Instant,因此我编写了自定义转换器: 我在我的文件中引用了forcedType: 我已经注释了我的POJO: 当我从DB读到我的POJO时,代码工作得很有魅力,如下所示: 但当我尝试在数据库中写入一些数据时,我在

  • 问题内容: 我正在将整个数据库访问层从Hibernate重写为JOOQ,并且遇到以下问题。 使用@Formula批注对JPA模型之一进行批注,如下所示: 在代码的后面,对数据库进行JPA查询,该数据库将 Fee5 与参数进行比较: 上面的查询如何转换为JOOQ DSL? 问题答案: 我设法通过以下JOOQ查询解决了该问题:

  • XML输入文件: XML输入文件转换为XML输出文件。将XML输入文件的firstName、middleName和lastName标签合并为XML Ouput文件的name标签,将XML输入文件的address1、address2、city、state和pincode标签合并为XML Ouput文件的address标签。 我几乎转换了代码,但我在这里与empId作斗争。我已经在XSLT文件中手动输