1

我使用 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;
...
}

有什么办法可以解决吗?这。

4

1 回答 1

0

您可以实现自己的代码生成器并扩展 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 类型时,它不会生成任何逻辑来填充这些成员。

于 2018-02-28T08:37:58.950 回答