是否有Java“通用”查询或过滤语言实现?

时间:2019-04-29 20:26:45

标签: java sql antlr cql

在尝试寻找答案时-我发现ANTLR似乎是实现查询语言的一般任务的标准/参考实现。

似乎每个面临任务的人都在做同样的事情-学习ANTLR是什么,如何配置它,如何使用它,然后构建自己的QL实现。

没有免费/开放的示例或基本/通用查询语言的参考实现(例如Hibernate或Cassandra中使用的一种,实际上是在幕后使用ANTLR)或某个语言的“哪里”部分常规SQL?我确实相信这对许多项目来说是非常常见的任务,如果每个人都从头开始重新实现它(这意味着ANTLR学习曲线),那是一种耻辱。

例如此处:Implementing free form query language in Java 接受的答案说:

  

问题在于没有通用查询语言之类的东西。每个人都不一样,您也不例外

我不同意上面的说法,因为SQL,Cassandra的QL和HibernateQL具有90%以上的相似性,因此两者之间有一个共同的部分-我正在寻找的那个部分希望不要重新实现方向...

以下示例之间的全面程度都可以:

级别1:

  1. “ x = 1”
  2. “ x = 2”
  3. “ x = 3”

查询/过滤器:“ x> 1”,预期结果:2和3

级别2:

  1. “ x = 1和y = 1”
  2. “ x = 2和y = 2”
  3. “ x = 3和y = 3”

查询/过滤器:“ x> 1和y <3”,预期结果:2

级别3:

  1. “ x = 1和y = 1”
  2. “ x = 2和y = 2”
  3. “ x = 3和y = 3”

查询/过滤器:“ x> 1和(y <2或y> 3)”,预期结果:2

...

N级:

  1. “ x = 1和y = 1”
  2. “ x = 2和y = 2”
  3. “ x = 3和y ='3 | 4 | 5'”

查询/过滤器:“(x> 2或x in('z',1))和(y in(1,2)或(y如'%3%',y如'%5%') )” 预期结果:1和3

问题:是否存在一个现有的(是否基于ANTLR的)Java解决方案(是否可扩展),可以用作查询/过滤器引擎(作为框架或示例来构建/扩展)上面的例子?


P.S。在这里做了一些“功课”,但似乎没有一个人回答我的特定话题...也许在2019年太过期待了:)

0 个答案:

没有答案