如何为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
相关产品推荐
相关产品推荐

