java插入mysql一条数据，如何返回自增的ID?

在实际操作中，我们常常有一些各种古怪的需求，比如现在这个。数据库的table中有一个自增的id字段，插入数据库后，要求返回刚刚插入那条数据的id。在单线程情况下，这当然是一个很简单的问题。首先获得数据库的最大id,给将要插入的语句id赋值为MAX+1,然后插入即可。 Oracle也很容易实现，给这个table建立一个sequence，每次都向这个sequence获取下一个id，效率也是价格公道童叟无欺。但是，给多线程下的mysql返回刚刚插入的id，这似乎有点小为难。一个立刻可以想到的方法是，给插入操作加个锁，插入后查询MAX id，然后解开锁。但是这个显然是不怎么讲究了。

网上翻了下，有很多种方法解决这个问题，不过最后选择了getGeneratedKeys这个方法。 getGeneratedKeys是Statement下的一个方法，说明如下：

Retrieves any auto-generated keys created as a result of executing this Statement object. If this Statement object did not generate any keys, an empty ResultSet object is returned.

Note:If the columns which represent the auto-generated keys were not specified,the JDBC driver implementation will determine the columns which best represent the auto-generated keys. Return: a ResultSet object containing the auto-generated key(s) generated by the execution of this Statement object Exception: