是否有任何库可以将SQL查询表示为Java代码中的对象?[已关闭]

2022-09-03 09:28:59

我想知道是否有任何库可用于将SQL查询表示为Java中的对象。

在代码中,我有很多java.lang.String类型的静态变量,它们是手写的SQL查询。我会寻找具有良好流利API的库,该API允许我将查询表示为对象而不是字符串。

例:

Query q = select("DATE", "QUOTE")
  .from("STOCKMARKET")
  .where(eq("CORP", "?"))
  .orderBy("DATE", DESC);

答案 1

Querydsl支持在SQL,JPA和JDO后端上进行查询。

上面的例子变成了:

query.from(stockmarket).where(stockmarket.corp.eq(someVar))
    .orderBy(stockmarket.date.desc())
    .list(stockmarket.date, stockmarket.quote);

Querydsl使用通过APT生成的代码将SQL模式镜像到Java查询类型。这样,查询是完全类型安全的(或与SQL“架构兼容”)。

我是Querydsl的维护者,所以这个答案是有偏见的。

我在这里发布了Querydsl与其他框架的比较。


答案 2

这些是一些很好的专有库,用于动态创建类型安全的SQL查询

除上述外,总有

  • Hibernate/JPA CriteriaQuery
  • 米巴蒂斯

你在 jOOQ 中的例子:

create.select(DATE, QUOTE)
      .from(STOCKMARKET)
      .where(CORP.equal(123))
      .orderBy(DATE.desc());

推荐