Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用JdbcTemplate获取最后一个自动递增的值?_Java_Mysql_Spring Jdbc_Jdbctemplate - Fatal编程技术网

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)工作正常。我在同一个方法中执行这两项操作。连续语句连接对象将如何不同,并且我无论如何都不使用连接池。为什么不尝试一个事务来确定?即使是连续的,这并不意味着如果使用池,它们将从同一个连接获得服务。您确定没有使用默认池吗?