对于多个数据库(和数据库服务器),我有完全相同的数据库定义。我如何告诉Jooq使用与我创建的连接到DB的“连接”相同的数据库?
示例(对于MySQL):
所有3个数据库都具有相同的定义、相同的表、索引等。TSM one是我们的应用程序使用的标准。
也许我应该使用DSL。使用(连接、设置)而不是DSL。使用(连接)
?这就是手册的意思吗?
如果我只有一个“输入”模式,我必须指定它吗?换句话说,我可以这样做吗:
Settings settings = new Settings()
.withRenderMapping(new RenderMapping()
.withSchemata(
new MappedSchema().withOutput(
databaseInfo.getProperties().getProperty("database.db"))));
或者我必须这样做:
Settings settings = new Settings()
.withRenderMapping(new RenderMapping()
.withSchemata(
new MappedSchema().withInput("TSM")
.withOutput(databaseInfo.getProperties().getProperty("database.db"))));
我假设您正在使用代码生成。在这种情况下,最简单的方法可能是根本不生成模式,而是使用
<configuration>
<generator>
<database>
<inputSchema>your_codegen_input_schema_here</inputSchema>
<outputSchemaToDefault>true</outputSchemaToDefault>
</database>
</generator>
</configuration>
详见手册:https://www.jooq.org/doc/latest/manual/code-generation/codegen-advanced/codegen-config-database/codegen-database-catalog-and-schema-mapping/
如果您希望使用模式限定保留生成的代码,并在运行时映射内容,那么您的第二次尝试似乎是正确的。将此消息传递给您的
配置
(即DSL.using()
调用):
Settings settings = new Settings()
.withRenderMapping(new RenderMapping()
.withSchemata(new MappedSchema()
.withInput("TSM")
.withOutput(databaseInfo.getProperties().getProperty("database.db"))));
更多细节可以在这里找到:https://www.jooq.org/doc/latest/manual/sql-building/dsl-context/custom-settings/settings-render-mapping
使用Jooq,我想在作为函数插入期间指定字段的值。 在SQL Server中,等效查询为:
问题内容: 到目前为止,我已经在Jenkins中看到了与构建过程相关的不同选项和工作。我想知道是否存在创建作业的方法,该作业将连接到数据库并运行脚本,该脚本将执行某些操作。也许Jenkins可以运行脚本文件或仅存储一些要运行的动作。提前致谢。 问题答案: 您有两个主要选择: 使用 执行外壳程序 或 执行Windows批处理命令 构建步骤 使用基于Java的工具,例如liquibase,ant任务,
问题内容: 我们每个午夜从CI运行Junit ans Selenium测试用例。我们正在使用Maven-SQL插件预先填充数据,如下所示。 由于不同用户同时进行构建,我们经常面临数据库僵局。我们认为的解决方案是在运行数据库脚本之前锁定数据库。 我们可以在运行脚本之前锁定数据库访问,然后在运行脚本之后解锁数据库访问吗? 问题答案: 共享数据库进行测试从来都不是一个好主意,想必您知道这一点,这就是为什
我正在创建一个应用程序,对jOOQ的当前状态有点困惑。这是我第一次使用jOOQ处理所有东西,包括CRUD,所以我可能会遗漏一些东西。 我知道DAO和POJO可能会被弃用,但是,我不知道如何在数据库优先的设计中处理这个问题。 我能做的最简单的事情就是创建我自己的Pojos,但是我们又回到了通常的JPA实体文件,如果数据库发生了变化,这些文件将无法正确地与记录映射。 1)弃用生成pojos是否意味着我
我使用jooq针对本地数据库生成对象,但在以后的生产中运行“for real”时,实际数据库将具有不同的名称。为了解决这个问题,我使用
move key db-index 返回1成功。0 如果key不存在,或者已经在指定数据库中