在JOOQ中生成字段名称

何塞·赫德兹_2

我正在尝试从数据库生成JOOQ模型。为了记录FooRecord和领域time_stamp我希望产生的设置者和getter是getTime_stampandsetTime_stampXY问题免责声明:这是用于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$0</expression>
            </fieldSetter>
            <fieldGetter>
              <transform>UPPER_FIRST_LETTER</transform>
              <expression>get$0</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设置来生成setter / getter,而无需在Java中实现自己的Generator类?

何塞·赫德兹_2

正如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());
  }

}

我添加了实现类并重新打包了JAR并运行了它,现在,设置器和获取器是按照我想要的方式生成的。再次感谢。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章