使用 JdbcTemplate 将字节数组存储到 MySQL 二进制列中

Storing a byte array into MySQL binary column with JdbcTemplate

我有一个MySQLtable(简体):

CREATE TABLE `tokens` (
    `token` BINARY(16) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

然后我尝试像这样插入一行:

JdbcTemplate jdbcTemplate; // org.springframework.jdbc.core.JdbcTemplate
...
String sql = "INSERT INTO `tokens` (`token`) VALUES (?)";
String token = "123e4567e89b12d3a456426655440000"; // UUID
jdbcTemplate.update(sql, new Object[]{token.getBytes()});

但是我遇到了这个异常:

Data truncation: Data too long for column 'token' at row 1  

我做错了什么?谢谢

编辑:看我的回答,我错过了十六进制转换(token 是一个 UUID)。

这是存储令牌(它是一个 UUID)的解决方案:

jdbcTemplate.update(sql, new Object[]{DatatypeConverter.parseHexBinary(token)});

让我们知道是否还有其他方法...