【问题标题】:Java, prepareStatement, SQL_CALC_FOUND_ROWS, FoundRows() hows it workJava、prepareStatement、SQL_CALC_FOUND_ROWS、FoundRows() 它是如何工作的
【发布时间】:2023-04-02 08:43:01
【问题描述】:

我正在尝试从数据库进行分页,到目前为止我发现如果你想使用限制,你应该使用SQL_CALC_FOUND_ROWS

但是,在 Java 中,我在理解如何调用它时遇到了一些问题。

我可以在一个 prepareStatement 中完成,还是需要多次调用?如果我进行了多次调用,MySQL 怎么知道我指的是最后一次调用计数?

谢谢。

【问题讨论】:

  • 请告诉我们您想要达到的目标。是否要在 SQL 查询中使用 limit 子句?

标签: java mysql pagination sql-calc-found-rows


【解决方案1】:

您必须进行两次调用(除非您在 db 中实现一些存储函数,该函数返回有限的结果集和计数,我认为这在 mysql 中是可能的,但从未尝试过)。

MySQL 将知道要返回的查询计数,因为有限制的查询和 SELECT FOUND_ROWS(); 将在同一个会话中。

【讨论】:

  • found_rows 是否存在与不同查询相关联的风险(例如:如果两个查询一个接一个地被调用)?我调用ps = connection.prepareStatement(originalQuery) 然后处理结果集,然后调用ps = connection.prepareStatement(totalRowsQuery) 然后处理它的结果集。在我处理原始查询时,是否存在在同一会话中调用查询的风险?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-28
  • 1970-01-01
  • 2017-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多