可用版本: Dev (3.21) | 最新 (3.20) | 3.19 | 3.18 | 3.17 | 3.16 | 3.15 | 3.14 | 3.13 | 3.12 | 3.11

自动数据类型转换

适用于 ✅ 开源版   ✅ 专业版   ✅ 企业版

许多原生 SQL 数据类型可以相互自动转换,例如 VARCHARINTEGER,反之亦然。

jOOQ API 还通过 org.jooq.tools.Convert 实用程序 API 支持各种此类自动转换,该 API 实现了以下规则

  • 无论目标类型如何,null 始终转换为 null,或原始类型的默认值,或 Optional.empty()
  • 身份转换(将值转换为其自身类型)始终是可能的。
  • 原始类型可以转换为其包装类型,反之亦然
  • 所有类型都可以转换为 String
  • 所有类型都可以转换为 Object
  • 所有 Number 类型都可以转换为其他 Number 类型
  • 所有 NumberString 类型都可以转换为 Booleantrue 的可能值(不区分大小写)
    • 1
    • 1.0
    • y
    • yes
    • true
    • on
    • enabled

    false 的可能值(不区分大小写)
    • 0
    • 0.0
    • n
    • no
    • false
    • off
    • disabled

    所有其他值评估为 null
  • 所有 java.util.Date 子类型(java.sql.Date, java.sql.Time, java.sql.Timestamp),以及大多数 java.time.temporal.Temporal 子类型(java.time.LocalDate, java.time.LocalTime, java.time.LocalDateTime, java.time.OffsetTime, java.time.OffsetDateTime,以及 java.time.Instant) 可以相互转换。
  • byte[] 可以转换为 String,使用平台的默认字符集
  • 如果数组元素也可以转换,则 Object[] 可以转换为任何其他数组类型

这种自动转换可以显式应用,但也可以通过各种 API 使用,尤其是在可以提供 java.lang.Class 参考的任何地方,例如

Record record = ...
int i = record.get(0, int.class);
String s = record.get(1, String.class);

反馈

您对此页面有任何反馈吗? 我们很乐意听取您的意见!

The jOOQ Logo