JOOQ自动生成的字段的SQLDataType有什么用类
What's the usage of field's SQLDataType in JOOQ's auto generated classes
当通过 JOOQ code gen 生成 JOOQ 类 时,对于每个字段,都会有一个与之关联的 SQLDataType,如下所示。
public final TableField<EventsRecord, LocalDateTime> CREATED_AT = createField(DSL.name("CREATED_AT"), SQLDataType.LOCALDATETIME(6).nullable(false), this, "");
每个生成的字段都有 SQLDataType 的用途或目的是什么?因为我们已经有了一个 return 类型,客户端代码很可能会使用这个类型来进行编译检查。
为什么我们还需要知道生成的 SQLDataType class/fields?
关于客户端类型,您可能指的是 LocalDateTime
类型,即您将在整个 jOOQ API 中找到的 <T>
类型。当然,那是 you 关心的类型,但是 jOOQ 在内部会关心 org.jooq.DataType
。您的示例已经给出了两个可能有用的想法:
LOCALDATETIME(6)
上有 6 位小数位的精度,它被使用(除其他外):
- 在
CAST
expressions。试试 DSL.cast(inline("2000-01-01 00:00:00"), EVENTS.CREATED_AT)
,
- 在DDL statements. Try
DSLContext.meta(EVENTS)
。您应该会看到具有适当数据类型 的 CREATE TABLE
语句
- 在乐观锁定功能中,以正确的精度创建修改时间戳。
- 有一个指示列是否可以为空,它被使用(再次除其他外):
- 在 DDL 语句中,见上文
- 在implicit join feature中决定是生成一个
INNER JOIN
还是一个LEFT JOIN
DataType
可以拥有许多其他属性,这对于运行时的 jOOQ 来说很有趣,包括:
- 自定义数据类型绑定
- 字符集
- 排序规则
- 转换器
- 默认值
- 是否是身份
- 此外,
String
不是 String
。例如,它可能表示 CHAR(2)
、CHAR(5)
、VARCHAR(100)
、CLOB
,这些在某些方言中都是完全不同的意思。
如果您的运行时元模型没有可用的信息,那将是一种耻辱。
当通过 JOOQ code gen 生成 JOOQ 类 时,对于每个字段,都会有一个与之关联的 SQLDataType,如下所示。
public final TableField<EventsRecord, LocalDateTime> CREATED_AT = createField(DSL.name("CREATED_AT"), SQLDataType.LOCALDATETIME(6).nullable(false), this, "");
每个生成的字段都有 SQLDataType 的用途或目的是什么?因为我们已经有了一个 return 类型,客户端代码很可能会使用这个类型来进行编译检查。
为什么我们还需要知道生成的 SQLDataType class/fields?
关于客户端类型,您可能指的是 LocalDateTime
类型,即您将在整个 jOOQ API 中找到的 <T>
类型。当然,那是 you 关心的类型,但是 jOOQ 在内部会关心 org.jooq.DataType
。您的示例已经给出了两个可能有用的想法:
LOCALDATETIME(6)
上有 6 位小数位的精度,它被使用(除其他外):- 在
CAST
expressions。试试DSL.cast(inline("2000-01-01 00:00:00"), EVENTS.CREATED_AT)
, - 在DDL statements. Try
DSLContext.meta(EVENTS)
。您应该会看到具有适当数据类型 的 - 在乐观锁定功能中,以正确的精度创建修改时间戳。
CREATE TABLE
语句- 在
- 有一个指示列是否可以为空,它被使用(再次除其他外):
- 在 DDL 语句中,见上文
- 在implicit join feature中决定是生成一个
INNER JOIN
还是一个LEFT JOIN
DataType
可以拥有许多其他属性,这对于运行时的 jOOQ 来说很有趣,包括:- 自定义数据类型绑定
- 字符集
- 排序规则
- 转换器
- 默认值
- 是否是身份
- 此外,
String
不是String
。例如,它可能表示CHAR(2)
、CHAR(5)
、VARCHAR(100)
、CLOB
,这些在某些方言中都是完全不同的意思。
如果您的运行时元模型没有可用的信息,那将是一种耻辱。