如何在JOOQ中公开新的SQL函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在JOOQ中公开新的SQL函数相关的知识,希望对你有一定的参考价值。

我想使用REGEXP_REPLACE sql函数(我的目标是Postgres,但是在对JOOQ中的DSL类进行快速检查之后,似乎还没有公开。

我应该如何解决添加新功能的问题?

  • 我可以尝试扩展AbstractFunction,类似于org.jooq.impl.Replace
  • 还有没有其他更通用的方法来调用JOOQ的DSL未公开的功能?
答案

使用plain SQL templating

public static Field<String> regexpReplace(
    Field<String> in, String pattern, String replacement
) 
    return DSL.field(
        "regexp_replace(0, 1, 2)", in.getDataType(), 
        in, 
        DSL.val(pattern), 
        DSL.val(replacement)
    );

以上是关于如何在JOOQ中公开新的SQL函数的主要内容,如果未能解决你的问题,请参考以下文章

jOOQ:如何在选择查询中调用 Sql 用户定义函数

如何在带有jooq的普通sql中使用命名参数

如何查看 jOOQ 在编译时执行的 SQL 语句?

如何修复:Jooq 代码不会从 sql 脚本为内存 db 中的 sqlite 生成 java 代码

如何在 JOOQ 中使用 toChar 函数?

SQL 方言如何在 hibernate 和 JOOQ 等框架内部实际工作