gpt4 book ai didi

java - 运行时 SQL 查询生成器

转载 作者:行者123 更新时间:2023-11-30 08:24:41 25 4
gpt4 key购买 nike

我的问题类似于

Is there any good dynamic SQL builder library in Java?

但是从上面的线程中提取了一个重要的观点:

Querydsl and jOOQ seem to be the most popular and mature choices however there's one thing to be aware of: Both rely on the concept of code generation, where meta classes are generated for database tables and fields. This facilitates a nice, clean DSL but it faces a problem when trying to create queries for databases that are only known at runtime.

除了使用普通的 JDBC + 字符串连接之外,还有什么方法可以在运行时创建查询吗?

我正在寻找的是一个 Web 应用程序,可用于构建表单以查询现有数据库。现在,如果类似的东西已经存在指向此类产品的链接,也将受到欢迎。

最佳答案

虽然为数据库元数据生成源代码肯定会增加使用 jOOQ 的值(value),这不是先决条件。许多 jOOQ 用户将 jOOQ 用于您设想的相同用例。这也反射(reflect)在 jOOQ tutorials 中。 ,其中列出了使用不带代码生成的 jOOQ 作为完全有效的用例。例如:

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").eq(
fieldByName("AUTHOR", "ID")))
.where(fieldByName("BOOK", "PUBLISHED_IN").eq(1948))
.getSQL();

以类似的方式,可以使用 Query.getBindValues() 从任何查询中提取绑定(bind)值.

对于动态 SQL 语句,这种方法仍然优于普通的 JDBC + 字符串连接,因为您无需担心:

  • 语法正确
  • 跨数据库兼容性
  • SQL注入(inject)
  • 绑定(bind)变量索引

(免责声明:我为 jOOQ 的供应商工作)

关于java - 运行时 SQL 查询生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22802323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com