Spring JDBC使用什么方法来获取最新密钥

时间:2014-09-28 08:44:26

标签: java mysql spring

关于YSQL文档:doc在最后一段中提到:

  

...有时候,使用SELECT LAST_INSERT_ID()查询会很棘手,因为该函数的值是作用于连接的。因此,如果在同一连接上发生某些其他查询,则该值将被覆盖。另一方面,getGeneratedKeys()方法由Statement实例确定范围,因此即使其他查询在同一连接上发生,也不在同一Statement实例上,也可以使用它。

当我在一个完全分布式的环境中工作时,对我来说非常重要的是不要碰巧从数据库中取回错误的密钥......

springJDBC正在使用以下哪些方法

我使用的是弹簧版3.2.1.RELEASE,但我没有开采升级到最新版本。

1 个答案:

答案 0 :(得分:0)

好。正如所建议的,我挖掘了代码,直到我到达这条小线。

ResultSet keys = ps.getGeneratedKeys();

PreparedStatementCallback匿名类内部调用。

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

这是一个线程/进程安全操作