为了账号安全,请及时绑定邮箱和手机立即绑定

我可以使用JOOQ作为SQL解析器吗?

我可以使用JOOQ作为SQL解析器吗?

一只名叫tom的猫 2022-09-01 17:38:49
我正在尝试在Java中解析SELECT语句。我熟悉JOOQ,并希望使用它。我知道它并没有明确设计为SQL解析器 - 它实际上远不止于此,所以我在想可能有一种方法可以使用其内部解析器来解析SELECT查询。我看到了一些有关如何使用访问者模式访问JOOQ的某些内部信息,但我需要使用树状结构在查询内部导航,该结构将允许单独访问查询的每个部分。我不想在所有用例中使用访客模式。这可能吗?我该怎么做?
查看完整描述

2 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

是的,可以。jOOQ有一个可以使用的解析器

从 jOOQ 3.17 开始,有一个实验模型 API 可用于在外部遍历表达式树,例如使用模式匹配,或在内部使用新的遍历器 API。在将表达式树呈现回 SQL 时,仍然可以使用 VisitListener 遍历表达式树。


查看完整回答
反对 回复 2022-09-01
?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

完整的 SQL 解析器可从 DSLContext.parser() 和 DSLContext.parsingConnection() 获得(请参阅手册中有关解析后者连接的部分)。

SQL 解析 API 页面给出了这个简单示例:

ResultQuery<?> query = 
DSL.using(configuration)
   .parser()
   .parseResultQuery("SELECT * FROM (VALUES (1, 'a'), (2, 'b')) t(a, b)");

parseResultQuery是单个 SELECT 查询所需的方法,如果可能有多个查询,请使用 parse(String)。


查看完整回答
反对 回复 2022-09-01
  • 2 回答
  • 0 关注
  • 140 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信