视频类html网站模板,苏州网站建设,莆田高端网站建设,wordpress 工具插件下载jOOQ的使用场景
jOOQ最初是作为一个库完全是JDBC和所有的数据库交互的抽象层而被创建。 在已有的软件产品中经常遇到的各种最佳实践被应用到这个库中。包含如下#xff1a;
类型安全数据库对象引用#xff0c;通过自动生成的模式#xff0c; 表#xff0c; 列#xff0c…jOOQ的使用场景
jOOQ最初是作为一个库完全是JDBC和所有的数据库交互的抽象层而被创建。 在已有的软件产品中经常遇到的各种最佳实践被应用到这个库中。包含如下
类型安全数据库对象引用通过自动生成的模式 表 列记录 存储过程类型DAO, POJO具体可以看代码生成章节。类型安全的SQL构造/SQL构建通过完整的DSL查询API, 建模出SQL在java语言中作为特定领域的语言。 阅读DSL查询api章节。SQL方言抽象和SQL子句仿真以改进跨数据库兼容性并在更简单的数据库中启用丢失的特性查看SQL方言章节使用jOOQ作为开发过程中不可或缺的一部分进行SQL日志记录和调试。
实际上jOOQ最初设计的目的是取代除处理连接池之外的任何其他数据库抽象框架。
以你喜欢的方式使用jOOQ
…但是开源是社区驱动的。 社区已经展示了各种不同于最初意图的使用jOOQ的方法。遇到的一些用例是
使用Hibernate解决70%的查询即CRUD剩下的30%部分使用JOOQ。 这30%确实需要操作SQL使用jOOQ用于SQL的构建 JDBC用于SQL的执行。使用jOOQ用于SQL的构建 Spring Data 用于SQL的执行。使用jOOQ 而不使用其源码生成器去构建框架基础用于动态SQL执行。
下面部分解释了在你的应用中使用jOOQ的各种各样的案例。
jOOQ不使用代码生成器时作为一个SQL生成器
我们强烈推荐使用jOOQ并使用其代码生成器来充分列用jOOQ的特性
然后 如果你拥有一个动态的模式 则不必使用代码生成器。 这是所有的使用场景中最简单的方式 允许为任何数据库构建有效的SQL。在这种应用场景中 你将不必使用jOOQ的代码生成器甚至可能都没有jOOQ的查询执行工具。相反您将使用jOOQ的查询DSL API将字符串、文字和其他用户定义的对象包装到一个面向对象的、类型安全的AST中对SQL语句进行建模。如下给出一个案例
// Fetch a SQL string from a jOOQ Query in order to manually execute it with another tool.
// For simplicity reasons, were using the API to construct case-insensitive object references, here.
Query query create.select(field(BOOK.TITLE), field(AUTHOR.FIRST_NAME), field(AUTHOR.LAST_NAME)).from(table(BOOK)).join(table(AUTHOR)).on(field(BOOK.AUTHOR_ID).eq(field(AUTHOR.ID))).where(field(BOOK.PUBLISHED_IN).eq(1948));String sql query.getSQL();
ListObject bindValues query.getBindValues();使用jOOQ查询DSL构建的SQL可以直接被JDBC所执行 使用Spring的JdbcTemplate 使用Apache DbUtils和很多其他工具注意 自从jOOQ缺省使用 java.sql.PreparedStatement 对于“1987”,将会生成一个绑定变量 可以阅读绑定变量部分
你也可以避免单独获取SQL字符串和绑定变量:
String sql query.getSQL(ParamType.INLINED);如果您希望仅将jOOQ用作SQL构建器那么手册的以下部分可能会引起您的兴趣
SQL building: 这部分包含了很多信息关于如何使用jOOQAPI来创建SQL语句普通SQL: 这一章节中包含了有用的信息 特别的对于一些开发者他们想支持表表达式 列表达式 即对jOOQ使用普通SQL, 而不是通过自动生成的一些工具类绑定值本节解释如何在jOOQ中管理和/或内联绑定值。
使用代码生成器用jOOQ作为SQL构建器
除过上述章节中使用独立的SQL构建器 您还可以使用jOOQ的代码生成特性以便使用Java编译器针对实际的数据库模式编译SQL语句。这为仅仅使用DSL查询和自定义字符串和文字构造SQL增加了很多功能和表现力因为您可以确保所有数据库工件实际上存在于数据库中并且它们的类型是正确的。我们强烈建议使用这种方法。 如下给出了一个例子
// Fetch a SQL string from a jOOQ Query in order to manually execute it with another tool.
Query query create.select(BOOK.TITLE, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME).from(BOOK).join(AUTHOR).on(BOOK.AUTHOR_ID.eq(AUTHOR.ID)).where(BOOK.PUBLISHED_IN.eq(1948));
String sql query.getSQL();
ListObject bindValues query.getBindValues();使用jOOQ查询DSL构建的SQL可以直接被JDBC所执行 使用Spring的JdbcTemplate 使用Apache DbUtils和很多其他工具注意 自从jOOQ缺省使用 java.sql.PreparedStatement 对于“1987”,将会生成一个绑定变量 可以阅读绑定变量部分
你也可以避免单独获取SQL字符串和绑定变量:
String sql query.getSQL(ParamType.INLINED);如果您希望仅将jOOQ用作SQL构建器那么手册的以下部分可能会引起您的兴趣
SQL building: 这部分包含了很多信息关于如何使用jOOQAPI来创建SQL语句普通SQL: 这一章节中包含了有用的信息 特别的对于一些开发者他们想支持表表达式 列表达式 即对jOOQ使用普通SQL, 而不是通过自动生成的一些工具类绑定值本节解释如何在jOOQ中管理和/或内联绑定值。
jOOQ作为一个SQL执行器
除过前面提到的任何工具 你也可以直接使用jOOQ来执行jOOQ生成的SQL语句。这将在前面讨论用于SQL类型安全构建的的API的基础上增加许多便利此时可以重用来自自动生成的类获取记录和自定义数据类型。如下给出一个案例
// Typesafely execute the SQL statement directly with jOOQ
ResultRecord3String, String, String result
create.select(BOOK.TITLE, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME).from(BOOK).join(AUTHOR).on(BOOK.AUTHOR_ID.eq(AUTHOR.ID)).where(BOOK.PUBLISHED_IN.eq(1948)).fetch();通过让jOOQ执行SQL, jOOQ查询DSL变成了真正的嵌入式SQL。
不过jOOQ并不止于此! 您可以使用jOOQ执行任何SQL。换句话说您可以使用任何其他SQL构建工具并使用jOOQ运行SQL语句。下面是一个例子:
// 使用你喜爱的工具构建sql字符串。
String sql SELECT title, first_name, last_name FROM book JOIN author ON book.author_id author.id WHERE book.published_in 1984;// 使用jOOQ获取数据
ResultRecord result create.fetch(sql);
// 或者使用JDBC获取数据。
ResultSet rs connection.createStatement().executeQuery(sql);
ResultRecord result create.fetch(rs);果您希望使用jOOQ作为SQL执行器(或不使用)代码生成手册的以下部分将对您感兴趣:
SQL构建 本节包含大量关于使用jOOQ API创建SQL语句的信息代码生成 本节包含针对开发人员数据库运行jOOQ代码生成器所需的信息SQL执行 本节包含大量关于使用jOOQ API执行SQL语句的信息获取 本节包含一些有用的信息介绍使用jOOQ获取数据的各种方法
使用SQL做增删改查
除了jOOQ流畅的API用于查询构造之外jOOQ还可以帮助您执行日常的CRUD操作。下面是一个例子
// Fetch an author
AuthorRecord author create.fetchOne(AUTHOR, AUTHOR.ID.eq(1));
// Create a new author, if it doesnt exist yet
if (author null) {author create.newRecord(AUTHOR);author.setId(1);author.setFirstName(Dan);author.setLastName(Brown);
}
// Mark the author as a distinguished author and store it
author.setDistinguished(1);
// Executes an update on existing authors, or insert on new ones
author.store();如果您希望使用jOOQ的所有特性那么您可能会对手册的以下部分感兴趣(包括所有分段):
SQL构建 本节包含大量关于使用jOOQ API创建SQL语句的信息代码生成 本节包含针对开发人员数据库运行jOOQ代码生成器所需的信息SQL执行 本节包含大量关于使用jOOQ API执行SQL语句的信息
jOOQ对于专业人士
jOOQ不仅仅是一个可以帮助您构建和执行SQL的工具以应对你产生的兼容的模式。jOOQ附带了很多工具。以下是jOOQ附带了很多工具。 这里列举jOOQ附带的非常重要的工具
jOOQ执行监听器 jOOQ允许你挂载你自定义的监听器到jOOQ的SQL语句执行生命周期以便集中协调对正在执行的SQL执行的任何任意操作。使用这个特性将其用于日志记录、身份生成、SQL跟踪、性能测量等。日志 jOOQ内嵌了标准的DEBUG日志输出器 记录跟进所有你正在执行的SQL语句并获取结果。存储过程 jOOQ支持存储过程和 你喜爱的任何数据库的方法。 所有例程和用户定义类型都会生成并且可以包含在jOOQ的SQL构建中。批量执行 在执行大量SQL语句时批处理执行非常重要。与JDBC比较jOOQ简化了这样的操作。导出和导入 jOOQ附带的API将很容易的以各种各样的格式导入和导出数据。
如果你是一个你喜爱的功能丰富的数据库的高级用户 jOOQ将帮助您访问数据库供应商的所有特定SQL特性例如OLAP特性 存储过程 用户自定义类型制造商特定SQL, 函数 以及更多。 本指南中包含了这些例程。
如下为jOOQ的学习大纲的思维导图https://www.drawon.cn/template/details/656ac5efc083fb5228fc17f8