在 JOOQ 中生成字段名称

Generating field names in JOOQ

我正在尝试从数据库生成 JOOQ 模型。对于记录 FooRecord 和字段 time_stamp 我希望生成的 setter 和 getter 为 getTime_stampsetTime_stamp . XY question disclaimer:这是为了JDBI映射。我没有按常规使用 JOOQ,只是为了生成 POJO。

这是我的 library.xml:

的片段
    <strategy>
      <matchers>
        <fields>
          <field>
            <expression>^(.*)$</expression>
            <fieldIdentifier>
              <transform>AS_IS</transform>
            </fieldIdentifier>
            <fieldSetter>
              <transform>UPPER_FIRST_LETTER</transform>
              <expression>set[=10=]</expression>
            </fieldSetter>
            <fieldGetter>
              <transform>UPPER_FIRST_LETTER</transform>
              <expression>get[=10=]</expression>
            </fieldGetter>
          </field>
        </fields>
      </matchers>
    </strategy>

这会生成 Gettime_stamp()Settime_stamp(Timestamp)

我尝试使用他们的默认 AS_IS 生成器,这会生成 time_stamp()/time_stamp(Timestamp),以及 gettime_stamp()/settime_stamp(Timestamp)

问题是 transform 应用在 expression 子句之后,反之亦然。

有没有一种方法可以使用 xml 设置生成我想要的 setters/getters,而不必在 Java 中实现我自己的生成器 class?

正如 Lukas Eder 所说,我根据 docs:

中显示的示例实现了 GeneratorStrategy
public class AsInDatabaseStrategy extends DefaultGeneratorStrategy {

  public String capitalize(String input) {
    return input.substring(0, 1).toUpperCase() + input.substring(1);
  }

  @Override
  public String getJavaSetterName(Definition definition, Mode mode) {
    return "set" + capitalize(definition.getOutputName());
  }

  @Override
  public String getJavaGetterName(Definition definition, Mode mode) {
    return "get" + capitalize(definition.getOutputName());
  }

}

我添加了实现 class 并重新打包了 JAR 和 运行 它,现在 setter 和 getter 是按照我想要的方式生成的。再次感谢。