当前位置: 首页 > 知识库问答 >
问题:

jooq代码gen与多个xml模式文件

冯育
2023-03-14

我在maven中使用jooq codigen插件从xml模式文件生成代码。

<configuration>
    <generator>
        <database>
            <name>org.jooq.util.xml.XMLDatabase</name>
            <properties>

                <!-- Use any of the SQLDialect values here -->
                <property>
                    <key>dialect</key>
                    <value>MYSQL</value>
                </property>

                <!-- Specify the location of your database file -->
                <property>
                    <key>xml-file</key>
                    <value>${project.basedir}/src/main/resources/schema.xml</value>
                </property>
            </properties>
        </database>
        <generate>
            <daos>true</daos>
            <pojos>true</pojos>
            <records>true</records>
            <relations>true</relations>
            <globalObjectReferences>false</globalObjectReferences>
        </generate>
        <target>
            <!-- The destination package of your generated classes (within the 
                destination directory) -->
            <packageName>com.generated.classes</packageName>

            <!-- The destination directory of your generated classes. Using 
                Maven directory layout here -->
            <directory>${project.basedir}/src/generated/classes</directory>
        </target>
    </generator>
</configuration>

是否有从两个不同的模式文件生成代码的解决方案。示例:schema other。xml。

共有1个答案

皇甫琛
2023-03-14

XMLDatabase元数据源尚不支持这一点。挂起的功能请求是:https://github.com/jOOQ/jOOQ/issues/6260

不过,也有变通办法:

如果两个架构/文件没有链接,则可以运行两个独立的代码生成运行。如果你正在使用Maven,你可以这样做(也见这个问题):

<plugin>
  <groupId>org.jooq</groupId>
  <artifactId>jooq-codegen-maven</artifactId>
  <version>3.9.4</version>

  <executions>
    <execution>
      <id>first-generation</id>
      <phase>generate-sources</phase>
      <goals><goal>generate</goal></goals>
      <configuration>
        <generator>
          <database>
            <name>org.jooq.util.xml.XMLDatabase</name>
            ...
            <properties>
              <property>
                <key>xml-file</key>
                <value>file1.xml</value>
              </property>
            </properties>
          </database>
          ...
          <target>
            <packageName>com.generated.classes.schema1</packageName>
            <directory>${project.basedir}/src/generated/classes</directory>
          </target>
        </generator>
      </configuration>
    </execution>

    <execution>
      <id>second-generation</id>
      <phase>generate-sources</phase>
      <goals><goal>generate</goal></goals>
      <configuration>
        <!-- jOOQ configuration here -->
      </configuration>
    </execution>
  </executions>
</plugin>

如果您使用的是独立代码生成,只需配置两个单独的运行。

当然,您可以手动将两个XML文件合并为一个,例如使用XSLT进行自动合并,或者手动合并。

 类似资料:
  • 如何强制flyway:migrate始终在jooq:generate sources之前执行?我使用maven包装器和spring boot。

  • 是否可以从代码生成器xml配置文件中的属性文件(例如数据库属性文件)中读取值? 例如,我将所有数据库属性存储在一个单独的文件中,如:- 以上连接信息正被我的应用程序用来访问数据库。我希望我的jooqCodeGen.xml看起来有点像这样: 这样我就不必复制属性了。我正在从build触发JOOQ代码生成工具。格拉德尔 建筑格拉德尔 我们有没有办法做到这一点?

  • 我想避免的一个问题是两个分支更新JOOQ生成的代码。我想这可能会导致混乱的合并冲突。使用JOOQ管理跨两个不同分支的数据库更改是否有最佳实践策略?

  • 问题内容: 我需要使用当前Maven构建中的“主” applicationContext-a.xml创建一个ApplicationContext。另一个连接来自另一个Maven构建的类,并在Maven依赖关系包含的jar中预设。 这里的想法: 这应该从Classpath加载applicationContext-a.xml,因为它位于同一Project中。 这可行。 然后应该从依赖项jar中加载ap

  • 我目前正在尝试使用JOOQ基于我现有的postgresdb生成类。在我的约克。xml config I省略了任何inputSchema标记,以便JOOQ生成它找到的所有模式: 但是,我想从生成的内容中排除信息模式。有没有办法以黑名单的方式做到这一点?还是必须为除信息模式之外的所有模式添加输入模式?

  • 某些东西非常通用,以至于你有很大的机会在绝大部分 Web 应用中,都能找到 他们的身影。例如相当多的应用在使用关系数据库而且包含用户注册和认证模块。 在这种情况下,请求开始之前,他们会打开数据库连接、获得当前已经登陆的用户 信息。在请求结束的时候,数据库连接又会被关闭。 这章提供了一些由用户贡献的代码片段和模板来加速开发 Flask Snippet Archives. 大型应用 简单的包 与蓝图一