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

我正在尝试在Java中解析SELECT语句。我熟悉JOOQ,并希望使用它。我知道它并没有明确设计为SQL解析器 - 它实际上远不止于此,所以我在想可能有一种方法可以使用其内部解析器来解析SELECT查询。

我看到了一些有关如何使用访问者模式访问JOOQ的某些内部信息,但我需要使用树状结构在查询内部导航,该结构将允许单独访问查询的每个部分。我不想在所有用例中使用访客模式。

这可能吗?我该怎么做?


一只名叫tom的猫
浏览 141回答 2
2回答

暮色呼如

是的,可以。jOOQ有一个可以使用的解析器:编程作为 CLI在线,作为 SQL 方言翻译器从 jOOQ 3.17 开始,有一个实验模型 API 可用于在外部遍历表达式树,例如使用模式匹配,或在内部使用新的遍历器 API。在将表达式树呈现回 SQL 时,仍然可以使用 VisitListener 遍历表达式树。

翻翻过去那场雪

完整的 SQL 解析器可从&nbsp;DSLContext.parser()&nbsp;和&nbsp;DSLContext.parsingConnection()&nbsp;获得(请参阅手册中有关解析后者连接的部分)。SQL 解析 API&nbsp;页面给出了这个简单示例:ResultQuery<?>&nbsp;query&nbsp;=&nbsp; DSL.using(configuration) &nbsp;&nbsp;&nbsp;.parser() &nbsp;&nbsp;&nbsp;.parseResultQuery("SELECT&nbsp;*&nbsp;FROM&nbsp;(VALUES&nbsp;(1,&nbsp;'a'),&nbsp;(2,&nbsp;'b'))&nbsp;t(a,&nbsp;b)");parseResultQuery是单个 SELECT 查询所需的方法,如果可能有多个查询,请使用&nbsp;parse(String)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java