方法一:SQL语句
INSERT INTO tableName (name) VALUES ('hahah');SELECT@@Identity;
方法二:SQL语句
select max(id) from tableName
方法三:SQL语句
SELECT LAST_INSERT_ID() 函数
注:LAST_INSERT_ID 是与table无关的,如果向表a插入数据后,再向表b插入数据,LAST_INSERT_ID会改变。
在多用户交替插入数据的情况下max(id)显然不能用。这时就该使用LAST_INSERT_ID了,因为LAST_INSERT_ID是基于Connection的,只要每个线程都使用独立的 Connection对象,LAST_INSERT_ID函数将返回该Connection对AUTO_INCREMENT列最新的insert or update 操作生成的第一个record的ID。这个值不能被其它客户端(Connection)影响,保证了你能够找回自己的 ID 而不用担心其它客户端的活动,而且不需要加锁。使用单INSERT语句插入多条记录, LAST_INSERT_ID返回一个列表。
方法二:JDBC
public static Connection getConn() {
try {
Class.forName(name);//指定连接类型
conn = DriverManager.getConnection(url, user, password);//获取连接
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
public static void main(String[] args) {
try {
conn = getConn();
System.out.println(conn);
String sql = "INSERT INTO fetch_id (name) VALUES ('hahah')";
pst = conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
pst.executeUpdate();
res = pst.getGeneratedKeys();
while (res.next()) {
System.out.println(res.getLong(1));
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
try {
if (res != null) res.close();
if (pst != null) pst.close();
if (conn != null) conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}