执行前重建查询
Posted
技术标签:
【中文标题】执行前重建查询【英文标题】:Rebuild Query before execution 【发布时间】:2017-04-25 10:43:01 【问题描述】:我正在研究使用 jOOQ 作为可配置 JDBC 后端的抽象层。一个也是必需的选项是非常特定的数据库,它支持 JDBC,但它具有不常见的 SQL 方言。我需要使用这个数据库,但我想继续使用通用的 DSL 和 API。例如,我对使用 DSLContext.executeUpdate 调用很感兴趣。 我了解如何通过实施 DefaultExecuteListener 解决我一半的问题。但是还有另一半,我必须将 jOOQ 生成的一条语句转换为 DB 接受的另一条语句。我认为通过使用 DSL 操作这个任务应该比 SQL 修改更容易实现。 是否可以在 ExecutionListener 早期步骤(例如“开始”)中访问 DSL 构造,将其分解并将新的 DSL 构造注入后续步骤?
【问题讨论】:
【参考方案1】:您正在寻找的是VisitListener
SPI,它也记录在手册中:
http://www.jooq.org/doc/latest/manual/sql-building/queryparts/custom-sql-transformation/
【讨论】:
非常感谢您的回复。 VisitListener 似乎是正确的注入点。我保证我会关心实现的性能。 :) 至少要避免问“为什么 jOOQ 这么慢?”这样的问题。 ;) @Stinger.911:嗯,你确实想做高级的事情,所以要付出代价。还有:是的。请非常小心,让您的VisitListener
仅在需要/适用时才启动。以上是关于执行前重建查询的主要内容,如果未能解决你的问题,请参考以下文章