在我的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时,我就想触发这个转换器,然后每当我回写数据库时,就触发它。你建议如何实现这一点?
虽然我强烈建议您以某种方式获得所有双列的列表,并在代码生成配置中应用强制类型配置,但在您的特定情况下,您不需要做太多工作就可以将记录调用到(MyClass.class)中。
您的记录
将仅包含String
值,您的MyClass
类将包含匹配的双
属性。jOOQ将自动从String
转换为双
,反之亦然。默认情况下,将应用DefaultRecordMapper
和DefaultRecordUnmapper
。
您可以通过指定新的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文件中手动输