【问题标题】:How can I make pagination with only jdbc and standard sql?如何仅使用 jdbc 和标准 sql 进行分页?
【发布时间】:2015-11-15 12:33:15
【问题描述】:

我正在用 java 开始一个新项目。我只想使用 jdbc,不使用 hibernate 或 jpa。我的数据库是 Microsoft SQL Server。但是用纯jdbc和sql做分页好像很复杂。 hibernate/jpa 内置了对分页的支持。但我只想使用 jdbc 和标准 sql。在互联网上搜索我找到了各种答案,他们都试图通过修改原始查询来解决问题。我想避免在原始查询中添加任何内容以进行分页。

我的 SQL Server 版本是“Microsoft SQL Server 2008”

【问题讨论】:

  • 我认为这可能会有所帮助:blog.sqlauthority.com/2013/12/30/…
  • 分页很复杂。您将不得不修改您的搜索查询以支持排序,选择第 2 页的 10 个产品,并且您应该再有一个查询来计算记录数。
  • 使用 SQL Server 2008 在服务器端实现分页的最佳方法是使用 ROW_NUMBER() OVER( ORDER BY Column)
  • @Jesús López 嗨,请解释一下。给我一个例子或一个链接。
  • @sohan nohemy,请看我的回答

标签: java sql-server jdbc pagination


【解决方案1】:

在 SQL Server 2012 及更高版本中,您可以使用 OFFSET FETCH 子句,但在 SQL Server 2005 及更高版本中,您可以使用 ROW_NUMBER() 函数。这里有一个例子:

DECLARE @PageNumber int = 1;
DECLARE @PageSize int = 20;

WITH Q AS
(
    SELECT *, ROW_NUMBER() OVER (ORDER BY TheOrderColumn) AS record_number
    FROM YourOriginalQuery
)
SELECT *
FROM Q
WHERE 
    record_number > (@PageNumber - 1) * @PageSize
    AND record_number <= @PageNumber * @PageSize
ORDER BY record_number;

【讨论】:

    猜你喜欢
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    • 2015-07-09
    • 2017-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-16
    相关资源
    最近更新 更多