在 JOOQ 中生成字段名称
Generating field names in JOOQ
我正在尝试从数据库生成 JOOQ 模型。对于记录 FooRecord
和字段 time_stamp
, 我希望生成的 setter 和 getter 为 getTime_stamp
和 setTime_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 是按照我想要的方式生成的。再次感谢。
我正在尝试从数据库生成 JOOQ 模型。对于记录 FooRecord
和字段 time_stamp
, 我希望生成的 setter 和 getter 为 getTime_stamp
和 setTime_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:
中显示的示例实现了 GeneratorStrategypublic 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 是按照我想要的方式生成的。再次感谢。