Java 具有多个查询的jdbcTemplate查询-spring引导

Java 具有多个查询的jdbcTemplate查询-spring引导,java,mysql,spring-boot,jdbctemplate,Java,Mysql,Spring Boot,Jdbctemplate,当我执行以下查询时,其工作正常 jdbcTemplate.query("select * from foo Limit 50"); 但是,当我想尝试执行以下查询时,即使在mysql中成功运行,也会出现语法错误 jdbcTemplate.query("select SQL_CALC_FOUND_ROWS * from foo Limit 10; SELECT FOUND_ROWS()"); 是否有任何更新?您不能在模板的单个查询执行中执行两个查询。它期望(正确地)执行其相应方法的单个操作将执行

当我执行以下查询时,其工作正常

jdbcTemplate.query("select * from foo Limit 50");
但是,当我想尝试执行以下查询时,即使在mysql中成功运行,也会出现语法错误

jdbcTemplate.query("select SQL_CALC_FOUND_ROWS * from foo Limit 10; SELECT FOUND_ROWS()");

是否有任何更新?

您不能在模板的单个查询执行中执行两个查询。它期望(正确地)执行其相应方法的单个操作将执行单个查询,从而返回单个结果。关键是
字符。我相信这就是语法错误的原因,正是因为您试图做的事情

有两种方法可以解决这个问题:

  • 执行两个不同的查询,一个用于限制,另一个用于总计数
  • 实现一个存储过程,它将为您提供这两个结果,这次您只需一个查询就可以获得它们

如果您选择第一种方法并希望进行同步,您可以检查此项。

什么是SELECT FOUND_ROWS()?@NiVeR MySql函数所以您要执行多重选择,您希望jdbc模板返回什么?@NiVeR@NiVeR在MySql中,此查询返回两个结果集,一个用于foo结果,另一个用于计数结果,我想达到同样的目标!我知道我们可以使用存储过程。我面临查询问题,在我的场景中,由于各种原因,我无法使用存储过程。。目前我正在执行两个查询,但问题是在运行第二个查询之前。。另一个线程可能会运行第一个查询。。这将导致错误的结果。。有更新吗?我们如何确保没有其他线程不会破坏结果。您可以将两个查询放在一个sinchronized块中。有多种方法可以运行select query,即Hmm,等等?我指的是一个synchronized关键字,它保证块内的代码将以同步方式访问,换句话说,一次由一个线程访问。我用一个链接更新了答案。我的意思是有太多其他方法不依赖于这个方法,我想同时执行这两个查询,所以同步在这里不起作用