SQL 执行
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
在本手册的前面章节中,我们已经了解了如何使用 jOOQ 构建 SQL,该 SQL 可以使用任何 API(包括 JDBC 或 ... jOOQ)执行。本手册的本节介绍使用 jOOQ 实际执行 SQL 的各种方法。
使用 JDBC 执行 SQL
JDBC 调用可执行对象 "java.sql.Statement
"。它区分三种类型的语句
-
java.sql.Statement
,或“静态语句”:此语句类型用于任何任意类型的 SQL 语句。它特别适用于内联参数 -
java.sql.PreparedStatement
:此语句类型用于任何任意类型的 SQL 语句。它特别适用于索引参数(请注意,JDBC 不支持命名参数) -
java.sql.CallableStatement
:此语句类型用于“调用”而不是“执行”的 SQL 语句。 特别是,这包括调用存储过程。可调用语句可以注册 OUT 参数
今天,对于习惯于面向对象设计的用户来说,JDBC API 可能看起来很奇怪。 虽然语句很好地隐藏了许多 SQL 方言特定的实现细节,但它们假定了有关语句内部状态的许多知识。 例如,您可以使用 PreparedStatement.addBatch()
方法,将正在创建的预处理语句添加到批处理语句的“内部列表”中。 此方法没有返回新类型,而是强制用户反思预处理语句的内部状态或“模式”。
jOOQ 正在包装 JDBC
这些都被 jOOQ 抽象掉了,jOOQ 以更面向对象的方式公开了这些概念。 有关 jOOQ 批量查询执行的更多详细信息,请参阅手册关于批量执行的部分。
本手册的以下各节将展示 jOOQ 如何包装 JDBC 以执行 SQL
替代执行模式
仅仅因为您可以,并不意味着您必须这样做。 在本章的结尾,我们将展示如何使用 jOOQ 生成 SQL 语句,然后使用其他 API(例如 Spring 的 JdbcTemplate 或 Hibernate)执行这些语句。 有关更多信息,请参阅有关替代执行模型的部分。
目录
- 4.1.
- jOOQ 和 JDBC 之间的比较
- 4.2.
- Query vs. ResultQuery
- 4.3.
- 正在获取
- 4.3.1.
- Record vs. TableRecord
- 4.3.2.
- 记录 1 到记录 22
- 4.3.3.
- 数组、映射和列表
- 4.3.4.
- ResultQuery 作为 Iterable
- 4.3.5.
- RecordMapper
- 4.3.6.
- POJOs
- 4.3.7.
- RecordMapperProvider
- 4.3.8.
- Ad-hoc Converter
- 4.3.9.
- ConverterProvider
- 4.3.10.
- 懒加载
- 4.3.11.
- 使用流进行懒加载
- 4.3.12.
- 批量获取
- 4.3.13.
- 稍后获取
- 4.3.14.
- 响应式获取
- 4.3.15.
- ResultSet 获取
- 4.3.16.
- 自动数据类型转换
- 4.3.17.
- 自定义数据类型转换
- 4.3.18.
- 数据类型查找
- 4.3.19.
- 上下文转换器
- 4.4.
- 静态语句与预编译语句
- 4.5.
- 重用查询的 PreparedStatement
- 4.6.
- JDBC 标志
- 4.7.
- 使用 JDBC 批量操作
- 4.8.
- 序列执行
- 4.9.
- 存储过程和函数
- 4.9.1.
- Oracle 包
- 4.9.2.
- Oracle 成员过程
- 4.10.
- 导出为 XML、CSV、JSON、HTML、文本、图表
- 4.10.1.
- 导出 XML
- 4.10.2.
- 导出 CSV
- 4.10.3.
- 导出 JSON
- 4.10.4.
- 导出 HTML
- 4.10.5.
- 导出文本
- 4.10.6.
- 导出图表
- 4.10.7.
- FormattingProvider
- 4.11.
- 导入数据
- 4.11.1.
- Loader API
- 4.11.2.
- 导入选项
- 4.11.2.1.
- 节流
- 4.11.2.2.
- 重复处理
- 4.11.2.3.
- 错误处理
- 4.11.3.
- 导入数据源
- 4.11.3.1.
- 导入 CSV
- 4.11.3.2.
- 导入 JSON
- 4.11.3.3.
- 导入记录
- 4.11.3.4.
- 导入数组
- 4.11.3.5.
- 导入 XML
- 4.11.4.
- 导入监听器
- 4.11.5.
- 导入结果和错误处理
- 4.12.
- 使用 UpdatableRecords 进行 CRUD 操作
- 4.12.1.
- 简单的 CRUD 操作
- 4.12.2.
- 记录的内部标志
- 4.12.3.
- IDENTITY 值
- 4.12.4.
- 导航方法
- 4.12.5.
- 不可更新的记录
- 4.12.6.
- 乐观锁定
- 4.12.7.
- 批量执行
- 4.12.8.
- CRUD SPI:RecordListener
- 4.13.
- DAO
- 4.14.
- 事务管理
- 4.15.
- 异常处理
- 4.16.
- ExecuteListeners
- 4.17.
- 数据库元数据
- 4.17.1.
- JDBC 元数据
- 4.17.2.
- 解释的元数据
- 4.17.3.
- XML 元数据
- 4.17.4.
- 生成的元数据
- 4.18.
- JDBC 连接
- 4.19.
- 批量连接
- 4.20.
- 模拟连接
- 4.21.
- 模拟文件数据库
- 4.22.
- 解析连接
- 4.23.
- 诊断
- 4.23.1.
- 行数过多
- 4.23.2.
- 过多的列
- 4.23.3.
- 重复语句
- 4.23.4.
- 重复的语句
- 4.23.5.
- 连续聚合
- 4.23.6.
- WasNull 调用
- 4.23.7.
- 谓词中的连接
- 4.23.8.
- 可能错误的表达式
- 4.23.9.
- 琐碎的条件
- 4.23.10.
- 转换模式
- 4.24.
- 使用 LoggerListener 记录日志
- 4.25.
- 使用 SQLExceptionLoggerListener 进行日志记录
- 4.26.
- 连接日志记录
- 4.27.
- 日志记录系统属性
- 4.28.
- 性能考虑
- 4.29.
- 替代执行模型
- 4.29.1.
- 将 jOOQ 与 Spring 的 JdbcTemplate 一起使用
- 4.29.2.
- 将 jOOQ 与 JPA 结合使用
- 4.29.2.1.
- 将 jOOQ 与 JPA Native Query 结合使用
- 4.29.2.2.
- 将 jOOQ 与 JPA 实体结合使用
- 4.29.2.3.
- 将 jOOQ 与 JPA EntityResult 结合使用
上一节 : 下一节 |
反馈
您对此页面有任何反馈吗? 我们很乐意听取您的意见!