繁体   English   中英

如何仅使用jdbc和标准sql进行分页?

[英]How can I make pagination with only jdbc and standard sql?

我正在用Java启动一个新项目。 我只想使用jdbc,不能使用休眠或jpa。 我的数据库是Microsoft SQL Server。 但是用纯jdbc和sql进行分页似乎非常复杂。 在hibernate / jpa中内置了对分页的支持。 但我只想使用jdbc和标准sql。 通过互联网搜索,我找到了各种答案,所有这些答案都试图通过修改原始查询来解决问题。 我想避免在我的原始查询中添加任何用于分页的内容。

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

在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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM