使用Java读取MySQL二进制(16) UUID

2024-02-11

这应该是一个非常简单的问题,我只是在这里遗漏了一些基本的东西,我正在经历“那些日子之一......” 无法使用 Hibernate 或其他 ORM。使用 Java 准备语句。

MySQL 的东西:

CREATE TABLE `article` (
  `articleID` binary(16) NOT NULL,
  `publisherID` bigint(20) DEFAULT NULL,
  PRIMARY KEY (`articleID`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8$$

insert into article ( articleID, publisherID )
values ( (UNHEX(REPLACE(UUID(),'-',''))), 1111  );

Java的东西

PreparedStatement ps = connection.prepareStatement( "select articleID, publisherID from article" );
ResultSet rs = ps.executeQuery();
while( rs.next())
{
  byte[] artIDArr = rs.getBytes( "articleID" );
  UUID artID = UUID.nameUUIDFromBytes( artIDArr );
}

rs.close();
ps.close();

现在,从数据库中读取 UUID...

    select hex(articleID) from article;

1C711C50E4773873AB1533401E2F420C
A1FCD341EE9311E297B700FFB00BB509
A95E06B6EEE611E297B700FFB00BB509

但是转储我在java代码中读到的内容:

6c825dc9-c98f-37ab-b01b-416294811a84
de6337f9-f276-3e30-b9a3-8d9338a1977f
57ccb5af-1a66-329f-b069-69638e1af24f

现在,这是因为我在将它们存储为二进制之前从 UUID 中删除了破折号,并且补水假设它们在那里?

将 MySql 中以二进制 (16) 形式存储的 UUID 读取到 Jav UUID 对象的正确方法是什么?

编辑:如果我将preparedStatment查询更改为“选择十六进制(文章ID)作为文章ID...”并将其作为字符串读取,那么它当然是数据库包含的内容,但UUID会抛出异常,因为字符串缺少破折号。 ..


UUID artID = UUID.nameUUIDFromBytes(artIDArr);

使用 MD5 和补丁字节。使用类似的东西

static UUID toUUID(byte[] bytes) {
    if (bytes.length != 16) {
        throw new IllegalArgumentException();
    }
    int i = 0;
    long msl = 0;
    for (; i < 8; i++) {
        msl = (msl << 8) | (bytes[i] & 0xFF);
    }
    long lsl = 0;
    for (; i < 16; i++) {
        lsl = (lsl << 8) | (bytes[i] & 0xFF);
    }
    return new UUID(msl, lsl);
}
UUID artID = toUUID(artIDArr);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Java读取MySQL二进制(16) UUID 的相关文章

随机推荐

  • 如何在关闭网页时丢弃会话变量?

    我们在开发网页时遵循的一个流程 是将页面绑定到一个或多个会话变量 这些会话变量仅用于该页面 用于保存当前处理对象 因此在关闭页面时不需要它们 如何在关闭页面时丢弃这些会话变量 关于该技术或如何解决该问题有什么建议吗 离开 关闭页面时不会引发
  • 如何以编程方式监视 docker 容器是否退出?

    我在 VM 主机上运行多个命名的 docker 容器 200 多个 我有一个管理器脚本 代码 应该从主机管理容器 我想知道是否有任何基于事件的机制可以在容器停止 失败时收到通知 这样我就可以重新启动已停止的容器 我能想到的一个解决方案是定期
  • 何时使用枚举、类或标签?

    假设您有一个特定页面类型的页面 例如普通页面 帐户页面等 页面由 Page 对象表示 我的问题是 如何为页面分配页面类型 我看到这些选项 通过使用 Page 对象中设置的 PageType 枚举 通过使用 PageType 类 并在 Pag
  • 如何使用每列以前的值填充缺失的信息? [复制]

    这个问题在这里已经有答案了 可能的重复 用最新的非 NA 值替换 NA https stackoverflow com questions 7735647 replacing nas with latest non na value 如何使
  • 如何更改node.js中process.env.PORT的值?

    我想改变的值process env PORT 我怎样才能做到这一点 我运行的是 Ubuntu 12 04 仅运行一次 在 unix shell 提示符下 PORT 1234 node app js 更永久 export PORT 1234
  • 如何使用asyncio下载s3存储桶上的文件

    我使用以下代码下载 s3 存储桶中的所有文件 def main bucket name destination dir bucket boto3 resource s3 Bucket bucket name for obj in bucke
  • 在服务中运行 Android TTS

    我试图让 Android 的 TTS 在服务中运行 但我不知道为什么它不起作用 它可以编译 不会崩溃 但它就是不起作用 不过 Toast 通知确实有效 package alarm test import android app Servic
  • 我可以使用 UML 来建模网站导航吗

    我可以使用 UML 对网站导航进行建模吗 如果是的话 有人给我一些书籍 链接以供参考 网站的 UML 之类的 如果不是的话 有哪些工具可以实现这一点 基本上我是一名程序员 当我设计以前的网站时 我只是在纸上勾勒出不同的页面设计想法 然后选择
  • 运行单元测试时禁用温斯顿日志记录?

    在执行节点模块的单元测试时是否可以有选择地禁用 Winston 日志记录 理想情况下 我希望在应用程序运行时进行日志记录以提供信息和调试目的 但在运行测试时不要使演示单元测试结果混乱 我对 winston 的使用是在我的模块内部的 如下所示
  • 无法将类型 void 隐式转换为对象。 .NET MVC 部分视图结果

    我有以下控制器操作 ChildActionOnly public virtual PartialViewResult ListActions int id var actions meetingActionRepository GetAll
  • 使用 RxJava 实现存储库模式

    我正在尝试找出一种更好的方法来实现 Android 中 RxJava 中的存储库模式之类的功能 这是我到目前为止所拥有的 从here https gist github com pieces029 5e92f9003fa1a4ebc59b
  • 如何去除两个顶点之间的边?

    我想删除两个顶点之间的边 所以我在 javatinkerpop3 中的代码如下 private void removeEdgeOfTwoVertices Vertex fromV Vertex toV String edgeLabel Gr
  • 使用 IDisposable 资源进行屈服

    是否有通过可支配资源产生收益的正确方法 返回的对象是 IDisposable 但它迭代的元素是 这是一个例子 public static IEnumerable
  • JPA - 禁用 persistence.xml 的验证

    我正在迈出使用 JPA Hibernate 的第一步 总体思路是连接到遗留数据库来执行复杂的查询 我认为 hibernate 是完成这项任务的绝佳伴侣 但是 首先 我创建了一个 bean persistence xml 和 hibernat
  • 更改文本文件编码

    如何通过代码更改文本文件编码 我正在使用此代码实际创建文件本身 但如何更改编码 更改为 UTF 8 w o BOM string path E Test Example txt if File Exists path File Create
  • Visual Studio XML 文件编辑器小写

    我正在 Visual Studio 中编辑 cshtml 带有 cshtml 文件扩展名 我自动设置格式或粘贴一些 xml 这会触发自动格式 并且 Visual Studio 会小写所有 xml 属性 因此 theAttribute gt
  • Windows 终端中的 Git Bash 在单独的窗口中打开

    我想将 git bash 添加到 Windows 终端 但是 当我在终端中添加新的 git bash 选项卡时 git bash 将在另一个窗口中打开 这是我的配置 guid acrylicOpacity 0 75 closeOnExit
  • "Hello" |> printfn 在 F# 中生成错误

    https tryfsharp fsbolero io https tryfsharp fsbolero io printfn Hello 但是 使用管道运算符可以按预期工作 没有错误 Hello gt printfn 类型 string
  • Xcode 8 AppStore 上传(错误 434)

    当我尝试验证App Store构建使用Xcode 8我收到以下错误 ITunesSoftwareServiceAuthenticationErrorDomain 434 这是什么意思 我多次尝试收到相同的错误 我做了一些更改 对配置文件等
  • 使用Java读取MySQL二进制(16) UUID

    这应该是一个非常简单的问题 我只是在这里遗漏了一些基本的东西 我正在经历 那些日子之一 无法使用 Hibernate 或其他 ORM 使用 Java 准备语句 MySQL 的东西 CREATE TABLE article articleID