signed

QiShunwang

“诚信为本、客户至上”

Java获取最后插入MySQL记录的自增ID值的3种方法

2021/6/3 15:58:27   来源:

方法一:

复制代码 代码如下:

String sql = "INSERT INTO users (username,password,email) VALUES (?,?,?);";
PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);//传入参数:Statement.RETURN_GENERATED_KEYS
pstmt.setString(1, user.getUsername());
pstmt.setString(2, user.getPassword());
pstmt.setString(3, user.getEmail());
pstmt.executeUpdate();//执行sql                                                                             int autoInckey = -1;
ResultSet rs = pstmt.getGeneratedKeys(); //获取结果  
if (rs.next()) {
  autoIncKey = rs.getInt(1);//取得ID
} else {
  // throw an exception from here
}

方法二:

复制代码 代码如下:

SELECT MAX(id) FROM table

该方法在多线程等情况下可能会造成不正确。

方法三:

复制代码 代码如下:

SELECT LAST_INSERT_ID() 或者 SELECT @@INDENTITY

这两个都是单个连接的,不存在所谓的两个人都同时插入,分不清的问题
唯一的问题是,如果一句INSERT插入多条,返回的是第一个ID

您可能感兴趣的文章:
  • MySQL表自增id溢出的故障复盘解决
  • 关于MySQL自增ID的一些小问题总结
  • 关于Mysql自增id的这些你可能还不知道
  • MySQL自增ID耗尽实例讲解
  • mysql自增id超大问题的排查与解决
  • MySQL分表自增ID问题的解决方法
  • 两种mysql对自增id重新从1排序的方法
  • 利用mysql事务特性实现并发安全的自增ID示例
  • mysql自增ID起始值修改方法
  • mysql如何让自增id归0解决方案
  • 关于mysql自增id,你需要知道的