在Spring中插入后获取id

Dev*_*s85 1 java sql spring jdbctemplate

我尝试在Spring中插入后检索id,但此解决方案不起作用:

String sqlquery2 = "INSERT into tab (attr1,attr2) VALUES (?,?)";
String sql1 ="select last_insert_id()";

jdbcTemplateObject.update(sqlquery2, value1, value2);
int id = jdbcTemplateObject.update(sql1);
Run Code Online (Sandbox Code Playgroud)

Xst*_*ian 5

对于每个jdbc访问,Spring为其连接池使用连接.

因此,它可以使用其池中的一个连接,进行插入,以及last_insert_id查询的另一个连接.

问题是last_insert_id查询与实际插入的连接相关联.

为了强制Spring JdbcTemplate使用相同的连接,所有代码的一部分是在插入之前启动Transaction,并在last_insert_id查询之后提交它.

使用 @Transactional

参考