在Java中查询类似DSL的机制以进行运行时sql绑定

Posted

技术标签:

【中文标题】在Java中查询类似DSL的机制以进行运行时sql绑定【英文标题】:Query DSL-like mechanism in Java for runtime sql binding 【发布时间】:2015-08-10 19:19:40 【问题描述】:

我正在寻找一个 Java 库,它针对 HQL 提供类似 Query DSL 的功能,但仅适用于运行时 SQL 绑定。特别是,我只需要一个 SQL 生成器,这样我就不必为连接、窗口子句等建模......

我们需要查询的架构仅在运行时可用,因此我们无法针对它构建 ORM。

例如,我希望能够写:

int count = from("Account").count();

代替:

string statement = "SELECT COUNT(1) FROM Account";

如果它也支持窗口子句将是有益的。

如果外面没有这样的东西,我就自己动手了。

提前致谢!

【问题讨论】:

我不确定构建 SQL 查询(包括窗口函数)与 HQL 有何关系,但如果您真的只是在寻找 SQL 构建器,那么 Stack Overflow 上已经有其他问题了:@ 987654321@,***.com/questions/370818/…,***.com/questions/22802323/runtime-sql-query-builder。为什么提到 HQL? HQL 因为那是我正在使用的 SQL 的变体。 【参考方案1】:

这是此答案的副本: Runtime SQL Query Builder

我假设 QueryDSL 和 JOOQ 仅依赖于基于 QueryDSL 中文档的模式生成,但上面的答案让我正确。

谢谢卢卡斯。

【讨论】:

仔细查看 JOOQ 文档,它不支持 Hive。我需要查看 QueryDSL 以查看它是否支持我的用例。我不相信它,因为它似乎依赖于代码生成...... 您能否将自己的答案标记为正确以表明问题已解决?

以上是关于在Java中查询类似DSL的机制以进行运行时sql绑定的主要内容,如果未能解决你的问题,请参考以下文章

ES-DSL基本使用

DSL和SQL查询很慢

SQL 在 ES 查询 DSL 中具有等效关键字

如何在 shell 脚本中运行 SQL 查询时获得类似 SQLPLUS 的输出

不兼容的类型不允许在 JOOQ dsl 中合并子查询

Android Gradle 插件Gradle 构建机制 ② ( Groovy 语言 DSL 特性 | settings.gradle 配置文件解析 | 配置子模块工程目录 | 顶层配置 )