3

我正在使用 jOOq 编写查询,除了我使用供应商特定类型的 SQL... 来进行特定的灵活搜索。SQL 和 flexiSearch 的主要区别在于参数值用大括号括起来。例如

SELECT * FROM {Product} WHERE {code} LIKE ‘%al%’

所以我想要做的是让 jOOq 自动拦截查询构建过程以包含括号。

浏览文档,似乎我应该实现某种执行侦听器?但我不确定在那之后该怎么做。谢谢

4

1 回答 1

2

你确实可以实现一个ExecuteListener替换

  • "使用任何方言的每一个奇数{和每一个偶数(注意句法歧义)"}
  • 使用 MySQL 方言`的每一个奇数{和每一个偶数`}
  • 使用 SQL Server 方言的每[一个{和每]一个}

但据我所知,这不是您要在生成的 SQL 中修补的唯一内容,因此您不妨分叉 jOOQ 开源版并自己修补相关代码。

请注意,jOOQ 并不真正支持这种特殊的方言。这不是你会遇到的唯一事情。例如,您可以尝试在 an 中对子查询进行模式匹配ExecuteListener并将它们包装在 中{{ ... }},但是通过直接修补 jOOQ 也更容易实现。

于 2018-11-13T09:59:11.310 回答