当前位置: 首页 > 知识库问答 >
问题:

如何返回生成的UUID主键

罗智志
2023-03-14

我正在使用mySQL数据库,该表有一个由数据库引擎生成的UUID格式的主键。我使用Spring framework JdbcTemplate(https://docs.Spring.io/Spring/docs/current/javadoc-api/index.html?org/springframework/jdbc/core/JdbcTemplate.html)来执行所有操作。但是在插入时,我确实需要将主键返回给调用方。JdbcTemplate有方法public int update(PreparedStatementCreator psc,KeyHolder generatedKeyHolder),但它只返回整数键。键盘接口也只允许数字键。有人知道如何克服这种不足吗?我应该使用jdbctemplate以外的东西吗?这是不可取的,但可能的。请给我个提示。

共有1个答案

魏英勋
2023-03-14

这对我管用!

public String save(SysUser sysUser) {
    String SQL = "INSERT INTO sys_user(id,account_number,telephone,email,real_name) VALUES (?,?,?,?,?);";
    KeyHolder keyHolder = new GeneratedKeyHolder();
    jdbcTemplate.update(connection -> {
        PreparedStatement preparedStatement = connection.prepareStatement(SQL, new String[]{"id"});
        preparedStatement.setString(1, sysUser.getId());
        preparedStatement.setString(2, sysUser.getAccountNumber());
        preparedStatement.setString(3, sysUser.getTelephone());
        preparedStatement.setString(4, sysUser.getEmail());
        preparedStatement.setString(5, sysUser.getRealName());
        return preparedStatement;
    }, keyHolder);
    return String.valueOf(keyHolder.getKeyList().get(0).get("id"));
}
 类似资料:
  • 我有Spring Boot应用程序,我使用JPA层与PostgreSQL交谈。我有一个类型UUID的非主键,我想在调用保存方法时自动生成。我用@GeneratedValue注释了属性,但插入时列值为空。 我还创建了列: 在这种情况下如何自动生成非主要UUID值?

  • 如何生成版本1(基于时间的)UUID?是否有一个单独的库,或者它是如何在Java7 API中提供的,我错过了它。

  • 我的印象是,UUID规范需要一个有保证的、真实的、全球唯一的结果,不是99.999999999999%的唯一结果,而是100%的唯一结果。从规格来看: UUID为128位长,可以保证跨空间和时间的唯一性。 看起来java只支持UUID规范的V3和V4。V4并不是真正独特的。对于使用< code > namuuidfrombytes 的V3实现,下面的结果是重复的,因为计算机太快了(编辑:循环到10

  • 看完这篇博文https://blog . starkandwayne . com/2015/05/23/uuid-primary-keys-in-PostgreSQL/ 我想知道更多关于Django是如何生成uuid的,因为我用它们作为我的pk。嗯,根据文档,https://docs.djangoproject.com/es/1.9/ref/models/fields/#uuidfield,Dja

  • 我是xslt的新手。我想使用xslt生成32位长UUID并将其作为输入添加到xml中。我试图使用数学自由的随机函数,但得到错误。 输入XML XSLT代码段 我正在使用在线编辑器,但得到如下异常。http://xslttest.appspot.com/ 错误:找不到名为的匹配0参数函数{http://exslt.org/math}随机()。没有具有本地名称random的Saxon扩展函数 实际上,

  • 问题内容: 我需要为数据库主键列生成唯一的Long ID。 我以为我可以使用 UUID.randomUUID()。getMostSignificantBits(), 但是有时它会产生一些负数,这对我来说也是个问题。 是否有可能仅从UUID生成正数长?会有数十亿个条目,因此我希望每个生成的键必须唯一。 问题答案: 之所以起作用,是因为当您按位与1进行操作时,它允许按原样传递同一位数字;当您按位与0进