如何阅读jOOQ指南

如何阅读jOOQ指南

本节将帮助您在jOOQ上下文中正确解释本手册默认的一些约定和定义。

代码块

如下是代码块:

-- A SQL code block
SELECT 1 FROM DUAL
// A Java code block
for (int i = 0; i < 10; i++);
 An XML code block -->
<hello what="world">hello>
# A config file code block
org.jooq.property=value

对于案例,提供一些代码段, 这是非常有用的。 通常, 使用jOOQ, 把SQL与相关联的java代码对比是非常有用的。 使用代码段, 通常会做左右对比,左边为SQL语句,右边为相关联的java代码。 或者上下对比。

-- In SQL:
SELECT 1 FROM DUAL
// Using jOOQ:
create.selectOne().fetch()

代码块内容

代码块的内容也遵循约定。如果在任何给定的代码块旁边没有提到任何其他内容,则可以假设如下约定:

-- SQL 约定
------------------
-- 如何没有指定任何内容, 假设是使用Oracle的语法
SELECT 1 FROM DUAL

// Java assumptions
// ----------------
// 当你地看到"standalone functions", 认为他们从静态的包org.jooq.impl.DSL中导入。 
// "DSL" 是静态的查询DSL的入口
exists(); max(); min(); val(); inline(); // 关联的 DSL.exists(); DSL.max(); DSL.min(); etc...
//当你看到 BOOK/Book, AUTHOR/Author 相似的实体,认为他们是静态的 (static) 从自动生成的schema导入
BOOK.TITLE, AUTHOR.LAST_NAME // com.example.generated.Tables.BOOK.TITLE, com.example.generated.Tables.AUTHOR.LAST_NAME
FK_BOOK_AUTHOR // com.example.generated.Keys.FK_BOOK_AUTHOR
    
// 当你在java代码中,看到'create'被使用,则认为这是org.jooq.DSLContext 的实例。 
    
// 为什么叫做`create`,实际上, jOOQ 的 QueryPart 在DSL对象上被创建。 
// "create" 因此是非静态查询DSL的入口。 
    
DSLContext create = DSL.using(connection, SQLDialect.ORACLE);

你的命名也许不同, 当然,你也可以命名createdb

执行

当你编写PL/SQL(过程化SQL语言), T-SQL或者其他过程SQL语言, SQL语句总是在分后后立即执行。 而jOOQ并不是这样的, 因为作为内部的DSL, jOOQ不能确保你的语句是完成的,直到你调用了fetch()或者execute()方法。手册试图尽可能彻底地应用fetch()和execute()。如果不是,则是隐含的执行。

SELECT 1 FROM DUAL   -->  create.selectOne().fetch(); 
UPDATE t SET v = 1   -->  create.update(T).set(T.V, 1).execute();

可变程度(参数数量)

jOOQ 记录(很多其他API元素)有一个可变程度N, 取值范围为1到222。API元素的可变程度用[N]表示,例如Row[N]或Record[N]。术语“可变程度(degree)”比“参数数量”更受欢迎,因为“可变程度(degree)”是SQL标准中使用的术语,而“参数数量(degree)”更常用于数学和关系理论。

设置

jOOQ允许使用org.jooq.conf.Settings配置,来覆盖运行时的行为。 如果不设置,不指定覆盖 配置。则缺省的运行时设置被使用。

样例数据库

jOOQ查询案例使用样例数据库, 如下将介绍样例数据库。

如下为jOOQ的学习大纲的思维导图:https://www.drawon.cn/template/details/656ac5efc083fb5228fc17f8

你可能感兴趣的:(jOOQ,python,开发语言,数据库架构,数据库orm,jooq)