【问题标题】:database creation statement with jooq使用 jooq 创建数据库的语句
【发布时间】:2012-10-29 14:57:16
【问题描述】:

在我们的 Java 项目中,我们已经开始使用 jooq 来构建查询,而不是使用普通的 SQL 字符串。该库很棒,但我有一个问题(因为我是 jooq-newbie):是否可以使用 jooq 创建数据库,但不包括项目 jooq 映射/生成器?

【问题讨论】:

  • 你的意思是生成代码,还是你的意思是创建数据库? (jOOQ 没有对 DDL 的正式支持,但是你仍然可以使用纯 SQL 命令来执行 DDL)。你的意思是你不会包含 jooq-meta 和 jooq-codegen?
  • 我们想通过调用存储过程来创建一个数据库。
  • 请更具体一点。这个问题很难回答。有关详细信息,请参阅Stack Overflow FAQ
  • 我认为作者的意思是如果他可以跳过jooq.org/tutorial.php#step2这一步,那么他可以将表/列名称定义为字符串
  • @skowron-line: 也许吧,虽然我仍然不确定他们想如何用 jOOQ “创建数据库”...

标签: java sql jooq


【解决方案1】:

您可以使用 jOOQ 做很多事情,而无需依赖其代码生成器。手册中的入门指南提到了一些示例:

http://www.jooq.org/doc/2.6/manual/getting-started/use-cases/jooq-as-a-standalone-sql-builder/

例如:

String sql = create.select(
                      fieldByName("BOOK","TITLE"), 
                      fieldByName("AUTHOR","FIRST_NAME"), 
                      fieldByName("AUTHOR","LAST_NAME"))
                   .from(tableByName("BOOK"))
                   .join(tableByName("AUTHOR"))
                   .on(fieldByName("BOOK", "AUTHOR_ID").equal("AUTHOR", "ID"))
                   .where(fieldByName("BOOK", "PUBLISHED_IN").equal(1948))
                   .getSQL();

它还参考了手册中关于将 jOOQ 用于“普通 SQL”的部分:

http://www.jooq.org/doc/2.6/manual/sql-building/plain-sql/

当然,您仍然可以使用代码生成器为您的架构生成元信息。这并不意味着您必须在生成器上添加运行时依赖项,因为生成器仅在编译时使用

【讨论】:

  • 这听起来可能很愚蠢,但是,fieldByName 的方法定义在哪里?我正在使用jooq 3.0.1,我发现fieldByName 实际上可以在较低版本的Factory 类中找到。但是当我切换到较低版本(2.6.4)时,我无法使用DSL类。
  • @onepotato:这是 2.x -> 3.x 迁移指南:jooq.org/doc/3.0/manual/reference/migrating-to-3.0。方法就在那里,在DSL.fieldByName()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-22
  • 2021-05-18
相关资源
最近更新 更多