2014-09-28 43 views
0

繼YSQL文檔:最後一段doc應提到的是:什麼方法呢SpringJDBC使用以獲得最新的關鍵

...,有時,它可能會非常棘手使用SELECT LAST_INSERT_ID()查詢,因爲該函數的值被限定爲連接。所以,如果在同一連接上發生其他查詢,該值將被覆蓋。另一方面,getGeneratedKeys()方法由Statement實例作用域,所以即使其他查詢發生在同一個連接上,但不在同一個Statement實例上,也可以使用它。

正如我在一個完全分佈式的環境中工作,這是對我來說很重要的是不要發生拿錯鑰匙從數據庫返回的......

哪個這些方法正被springJDBC

我使用彈簧版本3.2.1.RELEASE但我沒有開採升級到最新版本。

+1

您可以隨時看的源代碼。但是我會假設它使用'getGeneratedkeys()',因爲'SELECT LAST_INSERT_ID()'是MySQL特有的,SpringJDBC沒有JDBC以外的DBMS抽象層。 – 2014-09-28 08:49:55

回答

0

好吧。如所暗示的,我通過代碼挖掘出來,直到我到達這條小線。

ResultSet keys = ps.getGeneratedKeys(); 

這是從一個PreparedStatementCallback匿名類中調用。

因此,對於所有意圖和目的的功能: int org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update(String sql, SqlParameterSource paramSource, KeyHolder generatedKeyHolder) throws DataAccessException

這是一個線程/進程的安全動作

相關問題