是否可以在 pom 文件中使用 r2dbc 驱动程序生成 jooq 类。例如,在下面的示例中,替换 jdbc 标签并使用 r2dbc。我正在使用 jooq 和 r2dbc,我也想将 jdbc 包含在其中。
<plugin>
<groupId>org.jooq</groupId>
<artifactId>jooq-codegen-maven</artifactId>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<jdbc>
<url>${env.DATABASE_URL}</url>
<user>${env.DATABASE_USER}</user>
<password>${env.DATABASE_PASS}</password>
<driver>${spring.datasource.driver}</driver>
</jdbc>
<generator>
<database>
<name>org.jooq.meta.mysql.MySQLDatabase</name>
<includePackages>false</includePackages>
<!-- <includeRoutines>false</includeRoutines>-->
<unsignedTypes>false</unsignedTypes>
<integerDisplayWidths>false</integerDisplayWidths>
<forcedTypes>
<forcedType>
<name>INTEGER</name>
<expression>.*</expression>
<types>(?i:TINYINT)</types>
</forcedType>
<forcedType>
<name>DOUBLE</name>
<expression>.*</expression>
<types>DECIMAL</types>
</forcedType>
</forcedTypes>
<schemata>
<schema>
<inputSchema>myschema</inputSchema>
</schema>
</schemata>
</database>
<target>
<packageName>com.jooq.db</packageName>
<directory>target/generated-sources/jooq</directory>
</target>
</generator>
</configuration>
</plugin>
那是不可能的。代码生成器仅适用于 JDBC。除了能够重用相同驱动程序进行代码生成和运行时的微小便利之外,使所有代码生成查询成为反应式的麻烦绝对不会给最终用户带来任何价值。特别是在使用 Maven 插件的情况下,您可以将 JDBC 驱动程序依赖项限制为仅适用于插件,而不适用于构建或应用程序的其余部分。
因此,只需使用 JDBC 驱动程序来生成代码即可。
为了完整起见,jooq 3.18.7(和 Kotlin)的工作配置具有 JDBC 驱动程序插件依赖项 Lukas 提到:
<plugin>
<groupId>org.jooq</groupId>
<artifactId>jooq-codegen-maven</artifactId>
<version>${jooq.version}</version>
<dependencies>
<!-- Using JDBC Driver for code generation -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.3.0</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>jooq-codegen</id>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<jdbc>
<driver>com.mysql.cj.jdbc.Driver</driver>
<url>jdbc:mysql://${env.DATABASE_HOST}:${env.DATABASE_PORT}/${env.DATABASE_SCHEMA}</url>
<user>${env.DATABASE_URL}</user>
<password>${env.DATABASE_PASS}</password>
</jdbc>
<generator>
<name>org.jooq.codegen.KotlinGenerator</name>
<database>
<name>org.jooq.meta.mysql.MySQLDatabase</name>
<inputSchema>${env.DATABASE_SCHEMA}</inputSchema>
<includes>.*</includes>
<excludes></excludes>
</database>
<generate>
<deprecated>false</deprecated>
<records>true</records>
<immutablePojos>true</immutablePojos>
<fluentSetters>true</fluentSetters>
</generate>
<target>
<packageName>com.jooq.db</packageName>
<directory>target/generated-sources/jooq</directory>
</target>
</generator>
</configuration>
</execution>
</executions>