我使用jooq codegen生成如下的实体类:
public class TCoactivitiesPinan extends BaseEntity implements Serializable {
private static final long serialVersionUID = 2007524284;
private Integer id;
private String openid;
private String tel;
private Timestamp createdtime;
...}
但是,我希望它自动确定如果它是时间类型,它会自动添加两个字段。像这样
public class TCoactivitiesPinan extends BaseEntity implements Serializable {
private static final long serialVersionUID = 2007524284;
private Integer id;
private String openid;
private String tel;
private Timestamp createdtime;
private String createdtime_start; // 创建时间_开始时间
private String createdtime_end; // 创建时间_结束时间
private Integer checkstate;
...
}
有什么办法可以解决吗?部份。
您可以实现自己的代码生成器并扩展POJO的“自定义代码部分”,如下所示:
https://www.jooq.org/doc/latest/manual/code-generation/codegen-custom-code
基本上,只需编写一个这样的类:
public class MyGenerator extends JavaGenerator {
@Override
protected void generatePojoClassFooter(TableDefinition table, JavaWriter out) {
for (ColumnDefinition column : table.getColumns()) {
if (column.getType().getType().equals("TIMESTAMP")) {
out.tab(1).println("private String %s_start; // 创建时间_开始时间",
getStrategy().getJavaMemberName(column, Mode.POJO));
out.tab(1).println("private String %s_end; // 创建时间_结束时间",
getStrategy().getJavaMemberName(column, Mode.POJO));
}
}
}
}
然后,按如下方式配置它:
<configuration>
...
<generator>
<name>com.example.MyGenerator</name>
...
</generator>
</configuration>
当然,上面的解决方案只会生成所需的成员,当您使用生成的POJO类型时,它不会生成任何填充这些成员的逻辑。