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

如何配置JooQ生成对应数据库表的Kotlin DTO数据类?

解决jOOQ生成Kotlin DTO(Data Class)的配置方案

核心问题说明

你当前生成的Role.kt其实就是jOOQ默认生成的Kotlin Data Class(POJO),只是命名不符合你想要的RoleDTO格式。要生成指定命名的DTO类,只需调整代码生成的命名策略,并确保POJO生成开关开启即可。

具体Maven配置示例

在jooq-codegen-maven插件中添加以下配置,确保生成命名为XXXDTO的Data Class:

<plugin>
    <groupId>org.jooq</groupId>
    <artifactId>jooq-codegen-maven</artifactId>
    <version>你的jOOQ版本(需≥3.12)</version>
    <executions>
        <execution>
            <goals>
                <goal>generate</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <jdbc>
            <driver>com.mysql.cj.jdbc.Driver</driver>
            <url>你的MySQL连接URL</url>
            <user>数据库用户名</user>
            <password>数据库密码</password>
        </jdbc>
        <generator>
            <name>org.jooq.codegen.KotlinGenerator</name>
            <database>
                <name>org.jooq.meta.mysql.MySQLDatabase</name>
                <inputSchema>itr</inputSchema>
            </database>
            <generate>
                <!-- 明确开启POJO生成(默认已开启,显式配置避免冲突) -->
                <pojos>true</pojos>
                <!-- 按需保留/关闭其他类生成,比如Record类 -->
                <records>true</records>
                <daos>false</daos>
            </generate>
            <target>
                <packageName>你的目标包名</packageName>
                <directory>target/generated-sources/jooq</directory>
            </target>
            <!-- 配置命名策略:将POJO命名修改为XXXDTO格式 -->
            <strategy>
                <name>org.jooq.codegen.DefaultGeneratorStrategy</name>
                <matchers>
                    <pojo>
                        <expression>(.*)</expression>
                        <replacement>$1DTO</replacement>
                    </pojo>
                </matchers>
            </strategy>
            <kotlinGenerator>
                <!-- 强制指定生成Data Class(默认值为true,显式配置更稳妥) -->
                <pojosAsKotlinDataClasses>true</pojosAsKotlinDataClasses>
            </kotlinGenerator>
        </generator>
    </configuration>
</plugin>

关键配置解释

  1. 开启POJO生成:<generate><pojos>true</pojos>确保jOOQ生成纯数据类,Kotlin环境下默认会生成data class。
  2. 自定义命名规则:通过<strategy>下的正则替换,将原表名对应的POJO(如Role)重命名为RoleDTO。
  3. 强制Data Class生成:<kotlinGenerator><pojosAsKotlinDataClasses>true</pojosAsKotlinDataClasses>明确指定生成Kotlin Data Class,避免因版本或配置覆盖导致的问题。

验证步骤

  1. 执行Maven生成命令:mvn clean jooq-codegen:generate
  2. 查看目标目录,会生成RoleDTO.kt(Data Class)、RoleRecord.kt等类,符合预期需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 21:57:28