当前位置: 首页 > 知识库问答 >
问题:

SpringJDBC使用什么方法获取最新密钥

弘承业
2023-03-14

以下YSQL留档: doc最后一段提到:

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

由于我在一个完全分布式的环境中工作,所以对我来说,避免从数据库中获取错误的密钥非常重要。。。

springJDBC正在使用以下哪种方法

我使用的是spring版本3.2.1。发布,但我不想升级到最新版本。

共有1个答案

云煌
2023-03-14

好正如建议的那样,我在代码中翻了一遍,直到找到这条小线。

ResultSet keys = ps.getGeneratedKeys();

它是从PreparedStatementCallback匿名类内部调用的。

因此,出于所有意图和目的,函数:intorg.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update(String sql,SqlParameterSource,KeyHolder生成的KeyHolder)抛出DataAccessExcture

这是线程/进程安全的操作

 类似资料:
  • 问题内容: 我正在用python写一个简单的程序,我需要获取最新版本的Chrome。但是我在任何地方都找不到如何获取最新版本的Chrome。有没有办法以编程方式获取最新版本的Chrome? 问题答案: Chrome小组的官方链接。 https://chromedriver.storage.googleapis.com/LATEST_RELEASE 这提供了最新的Chrome版本 我编写了一个简单的

  • 问题内容: 使用Java中的sqlite获取最后插入的ID的最佳方法是什么?Google给了我不同的答案-有人说选择last-insert- rowid;其他人说调用statement.getGeneratedKeys()。最好的路线是什么?(我只想返回id,而不将其用于其他插入或其他操作。) 问题答案: 如果您的JDBC驱动程序支持它,则使用它。您不想在插入后尝试自己获取密钥。如果您的驱动程序不

  • 问题内容: 我想每次引用页面时都增加一个cookie值,即使该页面是从缓存中加载的。实现此目的的“最佳”或最简洁的方法是什么? 问题答案: 从http://www.quirksmode.org/js/cookies.html#script被盗 使用它: 如评论中指出的那样,由于cookie被存储并作为字符串返回,因此您应该将其强制转换为int。使用或会为您实际投放,但更确切地知道您正在使用的是更安

  • 问题内容: 我试图通过C#中的代码找到最佳的(快速与最简单)访问SQL Server代码的方法。 当我从书本上学习时,我遇到了很多建议,通常都建议我通过拖放来完成。但是,由于我想在代码中做到这一点,所以第一种方法是按列号获取数据,但是SQL Query中的任何重新排序(如添加/删除列)都让我难以解决。 例如(别笑,有些代码大约有2年历史了),我什至编写了特殊的函数来传递sqlQueryResult

  • 问题内容: 我想使用java 8流方法从列表中获取最大值。 结构如下: 我读取了一个csv文件,并将每一行的数据存储在一个单独的type对象中。 所有这些对象都存储在一个名为 所有对象都有一个字段: a 包含2个字段:和 public class Round{ private List hits; } public class Hits{ private int numberOfGames; pr

  • 我在使用来自Firebase的新FiRecovery时遇到了问题。 情境:我有一个 我使用集合(“房间”)创建房间。添加(房间) 我想做的是:我需要更新一个房间。 为此,我使用:<代码>集合('room')。doc(房间ID)。更新(update) 因此,我需要在我的收藏中的文档中添加ROOM\u ID: 有没有可能实现这一目标? 另一种方法是为自己创建一个生成的ID: 但我想避免它。