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

用不同的SQL方言从JOOQ元模型生成模式

钱锦
2023-03-14

我正在考虑使用jOOQ作为一个typesafe、DB方言独立的SQL生成器,因为我需要在一个较大的应用程序中动态创建一个小型数据库DDL脚本和大量INSERT-和UPDATE语句。然后我们提供文件作为下载。

我想为用户提供一个可供选择的不同DB方案,以便导出到:SQLiteMySQL/MariaPostgres,如果许可是商业许可,则可以选择AccessOracle等。

    List<DSLContext> dbdialects = new ArrayList<DSLContext>();
    dbdialects.add(using(SQLDialect.MYSQL));
    dbdialects.add(using(SQLDialect.FIREBIRD));
    dbdialects.add(using(SQLDialect.SQLITE));
    //other dialects including MS Access available via commercial license.

    for (DSLContext create : dbdialects) {

        String dialect = create.configuration().dialect().toString();
        String sql = create.insertInto(EMPLOYEES)
                .set(EMPLOYEES.FIRST_NAME, fn)
                .set(EMPLOYEES.LAST_NAME, ln)
                .getSQL(ParamType.INLINED);
        System.out.println(dialect + "\t" + sql);
    }

当然,我可以手工为每个RDBMS重新创建基本模式,但这很乏味,容易出错,而且似乎是多余的:难道没有一种聪明的方法可以使用我用MySQL DB模式创建的从jOOQ生成的元模型来为其他SQL方言生成模式吗?

共有1个答案

金英华
2023-03-14

这个功能是通过DSLContext.ddl()方法提供的,这些方法是在Jooq3.8中与#3160一起添加的。

为了生成和执行DDL查询(create TABLEalter TABLE ADD constraint等),只需将表名或架构名传递给DDL()方法:

Queries queries = DSL.using(configuration).ddl(EMPLOYEES);
for (Query query : queries)
    query.execute();
 类似资料:
  • 问题内容: 我使用jOOQ 3.11.11生成了这样的SQL模板。 SQL模板: 将存储SQL模板,并根据实时查询条件确定参数。 实时SQL: order by子句有问题。 所以。如何用 “ id desc” 或 “ name asc” 用param 排序 替换订单并消除引号? 问题答案: 创建一个绑定变量,该绑定变量的生成方式与SQL一样,或者您选择使用命名参数,或者选择内联绑定变量。有关绑定变

  • 问题内容: 我们正在使用Oracle 11数据库和Java开发环境(使用Eclipse),并且希望将多个xml模式迁移到SQL模式。 已经看过xsd了,但是确实需要一些可以在不安装SQL Server的情况下从ant / Eclipse运行的功能。 问候, 安迪 问题答案: 另一个选择是使用JAXB生成Java对象,并使用Hibernate创建基于类层次结构的架构。 话虽如此,这取决于您要尝试做的

  • 我目前正在进行一个项目,该项目需要使用QVTO将一个模型转换为另一个模型。源模型是以表格形式表示的状态机。目标模型也是具有节点和边的statemachine。源模型只有领域元模型,但目标模型同时具有领域和符号元模型。符号元模型是http://www.eclipse.org/gmf/runtime/1.0.2/notation。我从源域模型转换到目标域模型,但是我的目标模型没有表示法模型。我想做的是

  • 我用jOOQ 3.11.11生成了这样的SQL模板。 SQL模板: 存储SQL模板,并在实时查询条件下确定参数。 实时SQL: 从句顺序有问题。 所以如何将order by param sort替换为“id desc”或“name asc”,并删除引号?

  • 我正在为我的后端java项目使用PostgreSql和Jooq。Postgre字符集UTF-8排序规则WIN1254土耳其语。样本表 品牌表 < li>Id < li >名称 模型表 Id 名称 品牌ID “我”字是大“我”。它不是土耳其语字母中的“ı”。 Jooq以'brandi̇d'和“getBrand”的身份生成模型。不允许在html中使用“getBrand”。Spring给出了这种用法的错

  • 我正在尝试使用eclipse gmf创建一个基于uml模型的图形编辑器, 为此,我基于我的uml模型创建了一个.gnemodel文件,但在生成的.ecore文件中没有关联