我正在使用 jOOq 来编写查询,除了我正在使用供应商特定类型的 SQL... 以进行特定的灵活搜索。 SQL 和 flexiSearch 之间的主要区别在于参数值包含在大括号中。例如
SELECT * FROM {Product} WHERE {code} LIKE ‘%al%’
所以我要做的是让 jOOq 自动拦截查询构建过程以包含括号。
查看文档,似乎我应该实现某种执行监听器?但我不确定在那之后该怎么做。谢谢
最佳答案
您确实可以实现一个 ExecuteListener
来替换
- 每个奇数
"
由{
和每个偶数"
由}
使用任何方言(注意句法歧义) - 每个奇数
`
由{
和每个偶数`
由}
使用 MySQL 方言 {
的每个[
和}
的每个]
使用 SQL Server 方言
但据我所知,这不会是您要在生成的 SQL 中修补的唯一内容,因此您不妨 fork jOOQ 开源版并自己修补相关代码。
请注意,jOOQ 并不真正支持这种特定的方言。这不会是您遇到的唯一事情。例如,您可以尝试在 ExecuteListener
中对子查询进行模式匹配,并将它们包装在 {{ ... }}
中,但这也更容易实现通过直接给 jOOQ 打补丁。
关于java - 使用 jOOq 时如何将参数值用括号括起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53264890/