使用Java根据数据库中的最大ID生成下一个ID

Posted

技术标签:

【中文标题】使用Java根据数据库中的最大ID生成下一个ID【英文标题】:Generate next Id as per the max id in database using Java 【发布时间】:2014-05-03 10:15:40 【问题描述】:

我正在开发一个 Web 应用程序。它将有多个用户。我正在使用 mysql 作为数据库。

在我的应用程序中,我正在获取最新的 id (from the database, using max(id)) ,然后为新注册生成下一个 id。这种方法是不正确的,因为 id 可能会在我更新 id 之间发生变化 我要最新的身份证。我google了一下,发现"last_insert_id()"

但是,我尝试了"SELECT last_insert_id() FROM rdtype ",但它给出的 0 与记录数相同。

我应该如何进行?

【问题讨论】:

只是“SELECT LAST_INSERT_ID();” 查看this 答案可能对您有所帮助。 【参考方案1】:

您应该使用 AUTO_INCREMENT 属性作为 id。 MySQL 将在每次插入时处理递增的 ID。 AUTO_INCREMENT 属性可用于为新行生成唯一标识。

在http://dev.mysql.com/doc/refman/5.6/en/example-auto-increment.html查看 MySQL 参考

【讨论】:

【参考方案2】:

我正在使用 Hibernate 进行数据库连接并且可以正常工作。我的数据库中有两列,一列是 ID(生成器类型是增量,通过休眠),另一列是注册 ID。我正在获取最大 ID,然后获取该最大 ID 的注册 ID,然后将该注册 ID 添加 1 以获得新的注册 ID....此外,我需要在将其保存到数据库之前获取这个新的注册 ID .

【讨论】:

以上是关于使用Java根据数据库中的最大ID生成下一个ID的主要内容,如果未能解决你的问题,请参考以下文章

Java 如何实现生成有序且唯一的id

hibernate 保存的时候ID重复

java 产生递增id

根据 id 列的条目数查询以将表中的数据聚合到另一个表中

MySQL中如何获取下一条插入的自增ID

springboot 根据用户ID切换动态数据源代码实现