首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在jooq中为mysql自定义UUID类型

在jooq中为mysql自定义UUID类型
EN

Stack Overflow用户
提问于 2022-07-29 01:41:34
回答 1查看 62关注 0票数 1

我正在将一个java应用程序移植到jooq。

目前,我有单独的sql类来支持MySQL、MariaDB和H2。

我将不同的UUID类型存储在每种类型中,因为它们具有不同的支持。Maria & H2有UUID数据类型。MySQL没有,所以我自己使用了BINARY(16)并转换到/从UUID

我不知道如何才能最好地处理这件事。jooq有一个UUID类型,但是对于MySQL,它创建一个VARCHAR(36)

代码语言:javascript
运行
复制
create.createTableIfNotExists("users")
    .column("user_uuid", SQLDataType.UUID.notNull())
    .execute();

我是否可以对mysql进行修改,以便在查询时使用二进制16和UUID_TO_BIN函数?

还是我需要只为mysql创建一份使用SQLDataType.BINARY的代码副本?

对我来说接受varchar也许是值得的。这个表可能有100 k记录,因此二进制16的文件大小比varchar 36要小,但这意味着每次触摸该列时,我都需要重写jooq。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-29 07:14:37

如果这值得在每个方言的基础上进行优化,那么您确实应该对这些数据库产品使用BINARY,并定义一个具有专用data type Binding的表,该表可以在每个方言的基础上处理转换。这样,您就不再需要再访问该专栏了,它将是透明的(当然,比较和其他操作符在BINARY上可能不起作用,这在VARCHAR上是可行的,但对您来说似乎还可以吗?)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73160786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档