Java 如何使用JdbcTemplate获取最后一个自动递增的值?
我正在使用Java 如何使用JdbcTemplate获取最后一个自动递增的值?,java,mysql,spring-jdbc,jdbctemplate,Java,Mysql,Spring Jdbc,Jdbctemplate,我正在使用SELECT LAST\u INSERT\u ID()获取最后一个自动递增的值。它在SQLyog和命令提示符下运行良好,但当我使用Spring JdbcTemplate使用相同的查询时,如下所示: String SQl1="SELECT LAST_INSERT_ID()"; int sales_id=jdbcTemplateObject.queryForInt(SQl1); System.out.println("returned sales_id is"+sales_id); 它返
SELECT LAST\u INSERT\u ID()
获取最后一个自动递增的值。它在SQLyog和命令提示符下运行良好,但当我使用Spring JdbcTemplate使用相同的查询时,如下所示:
String SQl1="SELECT LAST_INSERT_ID()";
int sales_id=jdbcTemplateObject.queryForInt(SQl1);
System.out.println("returned sales_id is"+sales_id);
它返回0,而不是预期的最后一个自动递增值。如何获得期望值?您可能在Spring JdbcTemplate中使用了连接池 如果是,您的驱动程序可以使用一个连接进行插入,但在最后一次\u insert\u id查询中使用另一个不同的连接
要强制使用相同的连接,请在插入之前启动一个事务,并在上次\u insert\u id查询之后提交它。这是mysql的问题,而不是java的问题。你做过任何插页吗?“选择最大值(id)”为您提供了什么?你查过了吗?当然,我在检索行之前插入值,max(id)工作正常。我在同一个方法中执行这两项操作。连续语句连接对象将如何不同,并且我无论如何都不使用连接池。为什么不尝试一个事务来确定?即使是连续的,这并不意味着如果使用池,它们将从同一个连接获得服务。您确定没有使用默认池吗?