开发者社区 问答 正文

JOOQ 这样的 DSL 相比手写 SQL 的优势有哪些:报错

用 JOOQ 写 SQL 查询是这样的:

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:~/scala-test', 
    'sa', '', 'org.h2.Driver')
 
a = T_AUTHOR.as("a")
b = T_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)

和直接写 SQL 语句比,都有哪些优势?还有哪些缺点

我能想到的优点有可以和 Java 代码结合的更紧密,可读性较好,类型安全。

展开
收起
kun坤 2020-06-14 09:22:49 1163 分享 版权
1 条回答
写回答
取消 提交回答
  • JOOQ在代码层面要比Mybatis简洁得多,而且性能也非常优异

    2021-09-30 22:46:28
    赞同 1 展开评论
问答分类:
问答地址: