Jooq указать время выполнения базы данных

У меня точно такое же определение базы данных для нескольких баз данных (и серверов баз данных). Как мне сказать Jooq использовать ту же базу данных, что и «Соединение», которое я создал для подключения к БД?

Пример (для MySQL):

  1. jdbc: mysql: // localhost: 3306 / tsm - моя база данных разработки (tsm), используемая для генерации кода
  2. jdbc: mysql: // RemoteAmazonDBHost: 3306 / customer1 - один из моих клиентов
  3. jdbc: mysql: // RemoteAmazonDBHost: 3306 / customer2 - Другой клиент

Все 3 базы данных имеют одинаковое определение, одни и те же таблицы, индексы и т. д. Одна TSM - это стандарт, который использует наше приложение.

Может мне стоит использовать DSL.using( Connection, Setting ) вместо DSL.using(Connection)? Это то, что подразумевает руководство здесь?

Если у меня есть только одна схема «Вход», нужно ли ее указывать? Другими словами, могу я сделать что-то вроде этого:

        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"))));
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
2
0
288
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я предполагаю, что вы используете генерацию кода. В этом случае проще всего вообще не генерировать схему, а использовать <outputSchemaToDefault> в конфигурации генерации кода, например

<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/

Если вы хотите сохранить сгенерированный код с квалификацией схемы и отображать вещи во время выполнения, то вторая попытка кажется правильной. Передайте это на ваш Configuration (т.е. вызов 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

Другие вопросы по теме