You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为JOOQ Codegen生成的POJO类名添加前缀?

在jOOQ Codegen中为生成的POJO类名添加前缀的实现步骤

要给jOOQ生成的POJO类名加前缀,确实需要通过自定义GeneratorStrategy来实现,具体步骤如下:

1. 自定义GeneratorStrategy类

创建一个继承DefaultGeneratorStrategy的类,重写getJavaClassName方法,针对POJO类型的类名添加自定义前缀。示例代码如下:

import org.jooq.codegen.DefaultGeneratorStrategy;
import org.jooq.meta.Definition;
import org.jooq.codegen.GeneratorStrategy.Mode;

public class CustomGeneratorStrategy extends DefaultGeneratorStrategy {
    // 自定义前缀,可根据需求修改
    private static final String POJO_PREFIX = "P";

    @Override
    public String getJavaClassName(Definition definition, Mode mode) {
        // 仅对POJO类型的类名添加前缀
        if (mode == Mode.POJO) {
            return POJO_PREFIX + super.getJavaClassName(definition, mode);
        }
        // 其他类型(如DAO、Record等)保持原有命名规则
        return super.getJavaClassName(definition, mode);
    }
}

2. 修改jOOQ配置,指定自定义策略

在你现有的Configuration配置中,给Generator添加Strategy配置,指定自定义策略类的全限定类名。修改后的配置代码如下:

Configuration configuration = new Configuration()
    .withJdbc(
        new Jdbc()
            .withDriver("org.mariadb.jdbc.Driver")
            .withUrl("jdbc:mariadb://**:3306/**")
            .withUser("**")
            .withPassword("**")
    )
    .withGenerator(
        new Generator()
            .withGenerate(
                new Generate()
                    .withPojos(true)
                    .withPojosEqualsAndHashCode(true)
                    .withPojosToString(true)
                    .withDaos(true)
            )
            .withDatabase(
                new Database()
                    .withName("org.jooq.meta.mariadb.MariaDBDatabase")
                    .withIncludes(".*")
                    .withExcludes("")
                    .withInputSchema("name-db")
            )
            .withTarget(
                new Target()
                    .withPackageName("model.pack")
                    .withDirectory("model/")
            )
            // 添加自定义策略配置,替换为你的类全限定名
            .withStrategy(new Strategy().withName("com.your.package.CustomGeneratorStrategy"))
        );

GenerationTool.generate(configuration);

关键注意事项

  • 确保CustomGeneratorStrategy类的全限定类名正确,且该类在jOOQ Codegen运行时的类路径中可被加载。
  • 如果需要给DAO类也添加前缀,可以额外重写getJavaDaoClassName方法,逻辑和POJO的处理类似。
  • 前缀可根据项目规范自定义,比如改成Entity或其他名称。

内容的提问来源于stack exchange,提问作者Emax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 07:05:52