如何在同一个 spring 引导服务中使用来自两个数据源的 jooq 生成 pojo

How to generate pojos using jooq from two data sources in the same spring boot service

我想使用 jooqtwo 数据源生成 pojo(两个单独的 MySQL 数据库托管在单独的 AWS RDS 上)在 same spring 引导服务中。我该怎么做?

我怀疑这里是否可以使用以下内容:

jooq {
    DBONE(sourceSets.main) {
        jdbc {
            driver = 'com.mysql.cj.jdbc.Driver'
            url = ...
            user = ...
            password = ...
        }
        generator {
            database {
                includes = '<DB_ONE>.*'
            }
            generate {
                relations = true
                records = true
                pojos = true...
            }
            target {
                packageName = 'com.abcd.jooq'
                directory = 'build/src/generated/java'
            }
        }
    }

    DBTWO(sourceSets.main) {
        jdbc {
            driver = 'com.mysql.cj.jdbc.Driver'
            url = ...
            user = ...
            password = ...
        }
        generator {
            database {
                includes = '<DB_TWO>.*'
            }
            generate {
                relations = true
                records = true
                pojos = true...
            }
            target {
                packageName = 'com.abcd.jooq'
                directory = 'build/src/generated/java'
            }
        }
    }
}

我注意到在构建 spring 启动应用程序后只能找到一个 config.xml。并且只为一个数据源生成 pojos。任何人都可以建议任何人做同样的事情吗?

您不能让两代运行将代码生成到同一个包中。每一代配置都拥有自己的包,并将删除所有不属于那里的东西。

您有两个选择:

  • 使用不同的目标包
  • 使用一些开发代码生成数据源,使您可以从同一台服务器访问两个数据库,例如通过使用 testcontainers (example here), or even the DDLDatabase