jOOQ 和 Groovy
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
和任何其他库一样,jOOQ 可以很容易地在 Groovy 中使用,利用 Groovy 语言的许多特性,例如
- Groovy 语句末尾可选的 ";"
- 局部变量的类型推断
一个简短的 Groovy jOOQ 应用程序可能如下所示
package org.jooq.groovy import static org.jooq.impl.DSL.* import static org.jooq.groovy.example.h2.Tables.* import groovy.sql.Sql import org.jooq.* import org.jooq.impl.DSL sql = Sql.newInstance('jdbc:h2:~/groovy-test', 'sa', '', 'org.h2.Driver'); a = AUTHOR.as("a"); b = BOOK.as("b") DSL.using(sql.connection) .select(a.FIRST_NAME, a.LAST_NAME, b.TITLE) .from(a) .join(b).on(a.ID.eq(b.AUTHOR_ID)) .fetchInto ({ r -> println( "${r.getValue(a.FIRST_NAME)} " + "${r.getValue(a.LAST_NAME)} " + "has written ${r.getValue(b.TITLE)}" ) } as RecordHandler)
请注意,虽然 Groovy 支持一些运算符重载的方法,但我们认为这些方法应该在 jOOQ 集成中避免。例如,Groovy 中的 a + b
映射到正式的 a.plus(b)
方法调用,jOOQ 在其 API 中提供了所需的同义词来帮助您编写此类表达式。尽管如此,Groovy 提供的类型安全性很低,因此,运算符重载可能会导致许多运行时问题。
Groovy 运算符重载的另一个需要注意的地方是,诸如 ==
或 >=
之类的运算符分别映射到 a.equals(b)
、a.compareTo(b) == 0
、a.compareTo(b) >= 0
。这种行为在像 jOOQ 这样的流畅 API 中没有意义。
反馈
您对此页面有任何反馈吗? 我们很乐意听取您的意见!